기본적으로 프로그램은 두 개의 서로 다른 버전의 라이브러리가 OS에 설치된 경우 항상 최신 버전의 라이브러리를 사용합니다. 모든 앱이 기본적으로 이전 버전의 라이브러리를 사용하도록 내 시스템을 구성하는 방법은 무엇입니까? 아마도 ldd
또는 ldconfig
을 사용해야 할 것입니다. 그러나이를 달성하는 방법을 모르겠습니다.기본적으로 라이브러리의 이전 버전을 사용하도록 응용 프로그램을 구성하는 방법
좀 더 자세한 내용은 아래 : 나는 정확한 분투를 사용하고 난 다음 수수께끼로 실행했습니다
- 분투 정확한 선박
libpoppler v0.18.4
[1] 모든 정밀 응용 프로그램 (명시하다, 잉크 스케이프 등) 이 버전의 라이브러리에 대해 빌드됩니다. libpoppler >= v0.20
이 필요한 ViewPDF [2]를 빌드하고 설치하고 싶습니다.- 위의 이유 때문에 Ubuntu Quantal [3]에서
libpoppler v0.20.4
을 역어졌습니다. 여기
내 시스템에 libs와 현재 사용할 수 있습니다 지금 구축하고 ViewPDF를 실행
[email protected]:~$ locate libpoppler. | grep -i /usr/lib/
/usr/lib/x86_64-linux-gnu/libpoppler.a
/usr/lib/x86_64-linux-gnu/libpoppler.so
/usr/lib/x86_64-linux-gnu/libpoppler.so.19
/usr/lib/x86_64-linux-gnu/libpoppler.so.19.0.0
/usr/lib/x86_64-linux-gnu/libpoppler.so.28
/usr/lib/x86_64-linux-gnu/libpoppler.so.28.0.0
[email protected]:~$ ls -lh /usr/lib/x86_64-linux-gnu/libpoppler.*
-rw-r--r-- 1 root root 3.8M Sep 24 17:15 /usr/lib/x86_64-linux-gnu/libpoppler.a
lrwxrwxrwx 1 root root 20 Sep 24 17:14 /usr/lib/x86_64-linux-gnu/libpoppler.so -> libpoppler.so.28.0.0
lrwxrwxrwx 1 root root 20 Sep 4 12:35 /usr/lib/x86_64-linux-gnu/libpoppler.so.19 -> libpoppler.so.19.0.0
-rw-r--r-- 1 root root 2.0M Mar 1 2012 /usr/lib/x86_64-linux-gnu/libpoppler.so.19.0.0
lrwxrwxrwx 1 root root 20 Sep 24 17:14 /usr/lib/x86_64-linux-gnu/libpoppler.so.28 -> libpoppler.so.28.0.0
-rw-r--r-- 1 root root 2.4M Sep 24 17:15 /usr/lib/x86_64-linux-gnu/libpoppler.so.28.0.0
것은 잘 작동합니다. 그러나 큰 문제는 원래 0.18.4
에 대해 작성된 일부 응용 프로그램 (xpdf, inkscape)이 손상되었다는 것입니다.
여기 내 질문 : 모든 응용 프로그램이 기본적으로 이전 버전의 poppler 라이브러리 (libpoppler.so.19.0.0
)를 사용하도록 시스템을 구성하는 방법은 무엇입니까? 가장 최신 버전을 사용하기 위해 최신 버전 (libpoppler.so.28.0.0
)에 맞게 특별히 제작 된 앱만 사용할 수 있습니까? 어쩌면 ldd 나 ldconfig를 사용해야 할 수도 있지만 어떻게 달성해야할지 모르겠습니다.
이 솔루션의 문제점은 관리자가 POV에서 lib를/usr/local에 설치하면 해킹이된다는 것입니다. Launchpad PPA를 통해이 패키지를 사용할 수 있도록 할 계획입니다. 사용자가 'libpoppler'라는 로컬 복사본을 컴파일하면 문제가 발생합니다. 'ldd'를 깔끔하게 구성하거나 정적 ViewPDF 바이너리를 빌드하여이 문제를 해결할 수있는 더 좋은 방법이 있을까요? – landroni
업데이트를 참조하십시오. –