默認情況下,當OS上安裝了該庫的兩個不同版本時,程序始終使用較新版本的庫。如何配置我的系統以便所有應用程序默認使用庫的較早版本?也許我應該使用ldd
或ldconfig
,但我不知道如何實現這一點。如何將應用程序配置爲默認使用舊版本庫
更多的細節如下: 我使用的是Xubuntu精確,我碰到以下難題:
- Xubuntu的精確船舶
libpoppler v0.18.4
[1]和所有的應用程序精確(了Evince,Inkscape中,等)是針對這個版本的庫而構建的。 - 我想構建並安裝ViewPDF [2],它需要
libpoppler >= v0.20
。 - 由於上述原因,我從Ubuntu Quantal [3]中支持
libpoppler v0.20.4
。
這裏是庫目前可我的系統上:
[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
現在構建和運行ViewPDF工作得很好。然而,最大的問題是,最初針對0.18.4
構建的一些應用程序(xpdf,inkscape)已經損壞。
所以這裏是我的問題: 怎麼可能配置我的系統,以便所有的應用程序默認使用舊版本的poppler庫(libpoppler.so.19.0.0
);並且只有專門針對較新版本(libpoppler.so.28.0.0
)構建的應用才能使用最新版本?也許我應該使用ldd或ldconfig,但我不知道如何實現這一點。
- http://packages.ubuntu.com/precise/libpoppler19
- http://www.qtrac.eu/viewpdf.html
- http://packages.ubuntu.com/quantal/libpoppler28
這個解決方案的問題在於,從維護者的POV安裝這樣的lib到/ usr/local比任何事情都更加黑客。我計劃通過Launchpad PPA使這個軟件包可用,並且如果用戶編譯自己的'libpoppler'本地副本,則會引發麻煩。有沒有更好的方法來處理這個問題,或許是通過整潔地配置'ldd'或者構建一個靜態的ViewPDF二進制文件? – landroni
查看更新。 –