Archlinux에서 동일한 패키지의 두 버전을 유지하는 방법은 무엇입니까?

Archlinux에서 동일한 패키지의 두 버전을 유지하는 방법은 무엇입니까?

저는 Archlinux를 실행하고 있습니다. 최근에 호출된 패키지 중 하나가 icu업데이트되었지만 Firefox는 libicuuc.so.56R에 의존합니다 libicuuc.so.55. 이 문제를 어떻게 해결할 수 있나요?

참고: R 패키지는 Intel MKL라이브러리에 대해 구축되었으므로 새 버전의 종속성에서는 작동하지 않습니다. R을 다시 빌드해 보았습니다. 여전히 이전 버전에 의존합니다.libicuuc.so.55

답변1

나는 당신이 이전 라이브러리를 사용하여 특정 실행 파일을 실행하고 싶다고 가정합니다. 실행 파일을 호출해 보겠습니다 myprogram.

libicuuc.so.55예를 들어, 다른 디렉토리에 배치하는 경우 다음과 같은 명령을 사용하여 이전 라이브러리를 사용하도록 지시 /opt/oldlibs/libicuuc.so.55할 수 있습니다 .myprogram

LD_LIBRARY_PATH=/opt/oldlibs myprogram

라이브러리 파일은 패키지 파일에서 추출할 수 있습니다(리소스에서 찾을 수 있습니다 /var/cache/pacman/pkg).

그래도 애플리케이션 사용 계획 문제가 해결되지 않으면 chroot제한된 환경(사용) 또는 컨테이너에서 실행하는 것을 고려할 수 있습니다.

답변2

아치리눅스 사용 경험

systemctl start mongodb에서 프로세스 시작 오류 발생

그냥 쳤어요 로그 제어-xe현재 로그 확인

libboost_system.so.1.64.1이 누락되었음을 보여줍니다(이전 것).

다음은 문제를 해결하는 데 사용한 요약 링크입니다.

readlink -f /lib/libboost_system.so.1.65.1  (new one)

readlink는 심볼릭 링크가 /usr/lib/libboost_system.so.1.65.1을 가리킨다고 알려줍니다.

/var/cache/pacman/pkg에서 Boost-libs 1.64를 추출하고 모든 /lib 파일을 /usr/lib에 붙여넣었습니다.오래된 파일을 덮어쓰려면 건너뛰세요

이를 통해 종속성을 깨는 추가 작업이 해결되었으며, 그래도 작동하지 않으면 누락된 심볼릭 링크를 생성합니다.

 ln -s /lib/libboost_system.so.1.64.1 /usr/lib/libboost_system.so.1.64.1 

얻은 경험

패치를 찾지 않고 항상 사용하십시오. pacman -Suy && pacman -S 패키지_이름무엇이든 설치하는 데 사용됩니다. 부분 업데이트는 지원하지 않습니다.(아치의 경우)

관련 정보