2012-10-16 2 views
0

기본적으로 프로그램은 두 개의 서로 다른 버전의 라이브러리가 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를 사용해야 할 수도 있지만 어떻게 달성해야할지 모르겠습니다.

  • http://www.qtrac.eu/viewpdf.html
  • http://packages.ubuntu.com/precise/libpoppler19
    1. http://packages.ubuntu.com/quantal/libpoppler28

    답변

    1
    당신이 configure의 기본 접두어에 따라, 소스에서 /usr/local에 구축

    Installl 모든 것을.

    업데이트 :이 패키지를 계속 배포하려면 다른 방법이 필요합니다. say /usr/lib/future이라는 디렉토리를 만들고 거기에 libpoppler.so의 고급 버전을 배치합니다. 응용 프로그램은 -rpath=/usr/lib/future 및 아마도 -rpath-link=/usr/lib/future을 사용하여 링크됩니다.

    +0

    이 솔루션의 문제점은 관리자가 POV에서 lib를/usr/local에 설치하면 해킹이된다는 것입니다. Launchpad PPA를 통해이 패키지를 사용할 수 있도록 할 계획입니다. 사용자가 'libpoppler'라는 로컬 복사본을 컴파일하면 문제가 발생합니다. 'ldd'를 깔끔하게 구성하거나 정적 ViewPDF 바이너리를 빌드하여이 문제를 해결할 수있는 더 좋은 방법이 있을까요? – landroni

    +0

    업데이트를 참조하십시오. –

    관련 문제