Ubuntu下安裝依賴包問題總結

如下包未滿足包依賴關係:

libvtk-dev5:依賴於:libfreetype6-dev,但它(libfreetype6-dev)將不會被安裝

             依賴於:libnetcdf-dev,但它(libnetcdf-dev)將不會被安裝
             ...略....

意思就是要安裝的libvtk-dev5軟件包依賴於libfreetype6包,但是該依賴包libfreetype6又沒法安裝,一般是由於系統中已經安裝了一個更高版本的libfreetype6包,libvtk-dev5依賴不了這個高版本的libfreetype6包。

同理遇到的另一個問題:
在執行apt-get install libprotobuf-dev時,提示如下(翻譯成了中文):

下列軟件包有未滿足的依賴關係:
 libprotobuf-dev : 依賴: zlib1g-dev 但是它將不會被安裝
E: 無法修正錯誤,因爲您要求某些軟件包保持現狀,就是它們破壞了軟件包間的依賴關係。

ibprotobuf-dev : 依賴: zlib1g-dev ,但是zlib1g-dev依賴了一箇舊的包。使用sudo apt-get install zlib1g-dev,t提示:

"zlib1g-dev : 依賴: zlib1g (= 1:1.2.8.dfsg-2ubuntu4) 但是 1:1.2.8.dfsg-2ubuntu4.1 已安裝"

解決辦法:
使用aptitude install  <programname>命令。aptitude與 apt-get 一樣,是 Debian 及其衍生系統中功能極其強大的包管理工具。與 apt-get 不同的是,aptitude在處理依賴問題上更佳一些。

舉例來說,aptitude在刪除一個包時,會同時刪除本身所依賴的包。這樣,系統中不會殘留無用的包,整個系統更爲乾淨。

sudo aptitude install libprotobuf-dev

運行後會提示:

"是否接收未安裝方案",輸入"n",終端界面會繼續運行(注意讀英文),繼續提示:

"是否接受降級方案",輸入"y",然後等待終端將想要安裝的軟件包安裝完。後面可能會提示一些是否覆蓋之前的軟件包文件,都是輸入"y"

原因分析:
Linux下經常需要安裝不同類型的庫,在Ubuntu中,這些類庫都是以“lib_name-version”的形式命名的。很多庫之間存在依賴關係,即要安裝這個就必須安裝那個。有時候,類庫之間依賴關係無法滿足,你所要安裝的程序就不能安裝。這類問題大多是由於相互依賴的幾個庫中一個或多個的版本已經更新,而用戶要安裝的庫依賴於這幾個庫的較低版本,這時候可以試試使用:

“sudo aptitude install  <programname> ”(尖括號內爲你要安裝的程序的名字)

可以參見博客《Ubuntu下安裝依賴的幾個解決方案》

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章