glibc에는 OS 2.29가 필요하며 최대 2.27이 필요한 응용 프로그램이 1개 있습니다. 이 두 가지 문제를 해결하는 방법은 무엇입니까?

glibc에는 OS 2.29가 필요하며 최대 2.27이 필요한 응용 프로그램이 1개 있습니다. 이 두 가지 문제를 해결하는 방법은 무엇입니까?

Opensuse 회전초는 glibc2.29와 함께 제공되므로 시스템의 다른 모든 것이 이에 의존합니다.

그러나 최대 2.27이 필요한 CrashPlanDesktop이 있습니다.

2.27의 opensuse 저장소를 쉽게 찾았습니다.

그러나 설치하려고 하면 다음과 같은 결과가 발생합니다.

rpm: /lib64/libc.so.6: version `GLIBC_2.27' not found (required by /usr/lib64/libpopt.so.0)

이 문제를 어떻게 해결할 수 있나요?

CrashPlanDesktop은 서비스와 통신해야 합니다.

chroot 등을 사용할 수 있나요?

실행 파일이 포함된 폴더에 rpm의 압축을 풀 수 있나요?

그리고 이 메시지를 받았는데 그게 무슨 뜻인지 모르겠어요

코드: d6 21 12 e3 c4 a7 81 1d 7a 48 5f 26 5f 37 b8 f1 ed f5 f8 7c 86 e8 25 4c a5 5a 29 b7 45 41 0c cc a7 76 95 b4 93 d9 d8 5e 4c b8 f4 95 11 c4 2c FC 6d a0 1d 3c 50 4a e0 5a 6b 48 18 f7 b9 ab

답변1

실제로 이 문제를 해결할 수 있었습니다. Electron 2.0.8을 다운로드하고, 아카이브에서 libnode.so를 추출하고, /usr/local/crashplan/electron/libnode.so를 Electron 2.0.8 zip의 libnode.so로 바꾸세요.

내 시스템은 Debian이지만 이는 OpenSuse에도 적용되는 것 같습니다.

(물론 이것은 비공식적이며 Code42나 다른 누구에게도 지원되지 않습니다)

답변2

glibc는 이전 버전과 호환되므로 glibc 2.27에서 실행되도록 작성된 코드는 glibc 2.29에서도 계속 실행되어야 합니다.

이전 버전과의 호환성을 위해 glibc는 기호 버전 관리를 사용하여 함수가 도입될 때를 표시합니다. 함수의 동작이 변경되면(특히 프로토타입이 변경되는 경우) 해당 버전에 대한 새로운 기호 버전이 도입됩니다. 그러나 이전 동작에 따라 달라지는 이전 glibc로 작성된 코드는 여전히 이전 동작을 사용하는 이전 기호 버전에 바인딩됩니다.

대부분의 Linux 배포판은 여러 glibc 버전의 병렬 설치를 실제로 지원하지 않습니다. 왜냐하면 전체 버전이 포함된 경로에 설치해야 하기 때문입니다(라이브러리 자체의 이름은 모든 glibc 버전에서 동일하게 "SONAME"이라고 함). 이므로 별도로 설치할 수 없으므로 이를 구별하기 위해 사용합니다.) 그러나 어떤 바이너리가 어떤 바이너리를 사용하는지 결정할 때 문제가 발생합니다. 그래서 라이브러리 버전마다 별도의 로더(동적 링커)가 필요하지만 버전별로 바이너리를 빌드할 때(또는 기존 바이너리에 인터프리터를 패치할 때) 인터프리터를 설정해야 합니다. 간단히 말해서, 여러 버전의 glibc를 설치하는 것이 가능하지만 설정이 복잡하고 사용하기가 정말 어렵습니다.

귀하의 신청서의 경우진짜glibc 2.27이 필요하며 glibc 2.29에서는 작동하지 않습니다(그러나 위에서 언급한 것처럼 작동해야 하므로 다음과 같습니다).허점(glibc 2.29), 가장 좋은 옵션은 기본적으로 glibc 2.27과 함께 제공되는 Linux 배포판에서 실행하는 것입니다.

호스트의 Linux 배포판을 변경할 수 없는 경우 컨테이너에서 애플리케이션을 실행하고 적절한 버전의 glibc가 있는 배포판에서 컨테이너 이미지를 빌드하는 것이 좋습니다.

관련 정보