前言:apt-get在安裝大多數包時是沒有問題的,但有些時候用apt-get命令安裝包出現錯誤提示如:the following packages have unmet dependencies(下列軟體包存在未滿足的依賴關係),通常可以採取更新軟體源的方法,這樣一般可以解決大多數軟體包安裝問題,但
前言:apt-get在安裝大多數包時是沒有問題的,但有些時候用apt-get命令安裝包出現錯誤提示如:the following packages have unmet dependencies(下列軟體包存在未滿足的依賴關係),通常可以採取更新軟體源的方法,這樣一般可以解決大多數軟體包安裝問題,但是有些疑難的包依賴問題僅憑這個方法是解決不了的就需要使用aptitude深入解決了。
平臺環境:ubuntu14.04
1. 一般用apt-get命令安裝包出現問題提示如:the following packages have unmet dependencies(下列軟體包存在未滿足的依賴關係),我們首先可以採取更新軟體源列表的方法,如果更新過程沒有提示”無法下載“的情況,成功更新了源一般即可順利安裝所需的包,即執行以下指令
sudo apt-get update
2.如果直接更新源列表還是不能安裝包,請先清除包緩存,再更新源,即依次執行以下指令後再嘗試安裝
sudo apt-get clean all sudo apt-get update
註:clean是清除本地所有的包緩存文件,即這個文件夾 /var/cache/apt/archives/ 和/var/cache/apt/archives/partial/下的所有除了鎖定了的文件
3.以上不能解決問題,就嘗試更換源,如下圖所示進入ubuntu軟體中心--設置界面--圖示位置選擇國內的其他較快的伺服器
之後再執行sudo apt-get update指令。
4.如果出現更新源列表失敗,提示錯誤如:無法下載......Hash和校驗不符,這是由於身份校驗信息出錯導致,可以把軟體中心的源設置菜單的身份驗證密鑰設置為預設值,如下圖所示,把紅框內的密鑰依次設置為預設值,再嘗試更新列表就解決啦!
5.另外有些時候使用apt-get指令安裝包時會出現以下錯誤提示,同樣是依賴關係錯誤:the following packages have unmet dependencies(下列軟體包存在未滿足的依賴關係),同時伴隨提示說:這個包(姑且稱為A吧)依賴於包B,但是包B將不被安裝,無法修正錯誤,因為您要求某些軟體包保持現狀,就是它們破壞了軟體包間的依賴關係。此時用apt-get指令是無論如何也不明白所以然的,什麼叫您要求保持現狀,就是這個原因不能安裝,氣死人!此時如果使用aptitude命令就能明白所以然了。
aptitude 是 Debian GNU/Linux 系統中, 非常神奇的的軟體包管理器,基於大名鼎鼎的 APT 機制, 整合了 dselect 和 apt-get的所有功能, 並提供的更多特性,特別是在依賴關係處理上。aptitude與 apt-get 一樣,是 Debian 及其衍生系統中功能極其強大的包管理工具。與 apt-get 不同的是,aptitude在處理依賴問題上更佳一些。舉例來說,aptitude在刪除一個包時,會同時刪除本身所依賴的包。這樣,系統中不會殘留無用的包,整個系統更為乾凈。
當我們用這個aptitude(如果沒有這個命令需要先用apt-get安裝一下這個包)時會發現詳細的依賴關係說明瞭,如安裝libgtk2.0-dev(A包)時,提示它依賴這個包libpango1.0-dev(B包),而B又依賴libpango-1.0-0 (=1.36.3-1ubuntu1)(C包),但是系統已經安裝了C包的一個更新的版本1.36.3-1ubuntu1.1 (D包)這樣如果要安裝這個A包就得降級D包到C包,然後安裝了B再安裝A,想想如果這個A包依賴了更多的要降級的包,這將是怎樣一個龐大的工程來安裝它,此時aptitude面對這種疑難雜症就要發揮神威了,它會給出多種解決方案,您只需要判斷解決方案是否合適即可,通常提示要降級某些包,這樣的情況按照提示執行即可成功解決依賴的問題。但是另外特別需要註意的是aptitude的使用是有風險的,如果你看的安裝某個包時提示有很多包衝突了,給出的解決方案是要刪除某些包,而且還是一大串,這時要註意了,不當的刪除會一步步把你的系統刪崩潰(我輕身經歷啊啊啊),這時就不要採取aptitude給出的方案了,還是要參照前述再軟體源的方向上著手解決依賴的問題。
註:軟體包的4種關係
軟體包之間存在四種關係:(1)depend upon 依賴關係。若A依賴B,則B必須安裝後,A的核心功能才能正常運行; (2)recommend 推薦關係。若A推薦B,則B安裝後,A常用到的附加功能才能正常運行; (3)suggest 建議關係。若A建議B,則B安裝後,A不常用到的增強功能才能正常運行; (4)conflict 衝突關係。若A與B衝突,則A和B不能同時安裝
總結:ubuntu在使用過程中包安裝是常事,掌握好apt-get及aptitude等包管理指令很重要,遇到包安裝問題多在互聯網上搜索,一般你遇到的別人都遇到過,群眾的力量是無窮滴!