1. 程式人生 > >通過apt-get安裝軟體時碰到某個依賴包的版本和已有版本衝突的解決方法

通過apt-get安裝軟體時碰到某個依賴包的版本和已有版本衝突的解決方法

本文的背景是需要樹莓派上安裝音效卡陣列,為了驗證音效卡陣列的可用,需要在樹莓派安裝OSDA,然後另外找伺服器安裝ODSA_Web,然後通過OSDA傳送監聽到的聲音到OSDA_Web作為呈現。

當安裝ODSA時碰到以下問題,原因是libasaound2-dev當前是依賴於libasound2這個庫的1.0.28-1版本,但樹莓派上已經有了另一個更新的版本1.0.28-1+rpi2

[email protected]:~ $ sudo apt-get install libasound2-dev
正在讀取軟體包列表... 完成
正在分析軟體包的依賴關係樹
正在讀取狀態資訊... 完成
有一些軟體包無法被安裝。如果您用的是 unstable 發行版,這也許是
因為系統無法達到您要求的狀態造成的。該版本中可能會有一些您需要的軟體
包尚未被建立或是它們已被從新到(
Incoming)目錄移出。 下列資訊可能會對解決問題有所幫助: 下列軟體包有未滿足的依賴關係: libasound2-dev : 依賴: libasound2 (= 1.0.28-1) E: 無法修正錯誤,因為您要求某些軟體包保持現狀,就是它們破壞了軟體包間的依賴關係。

解決思路是使用aptitude這個命令安裝,他可以智慧地分析庫之間的依賴關係,並給出調整建議。如下面的日誌所示,按他的建議把libasound2這個庫從1.0.28-1-rpi2版本降級到1.0.28-1版,即可成功安裝libasaound2-dev(請注意11及15行的輸入)

[email protected]:~/odas/build $ sudo
aptitude install libasound2-dev 下列“新”軟體包將被安裝。 libasound2-dev{b} 0 個軟體包被升級,新安裝 1 個,0 個將被刪除, 同時 2 個將不升級。 需要獲取 94.9 kB 的存檔。解包後將要使用 389 kB。 下列軟體包存在未滿足的依賴關係: libasound2-dev : 依賴: libasound2 (= 1.0.28-1) 但是 1.0.28-1+rpi2 已安裝。 下列動作將解決這些依賴關係: 保持 下列軟體包於其當前版本: 1) libasound2-dev [未安裝的] 是否接受該解決方案?[
Y/n/q/?] n // **在這裡否決維持現狀的方案** 下列動作將解決這些依賴關係: 降級 下列軟體包: 1) libasound2 [1.0.28-1+rpi2 (now) -> 1.0.28-1 (oldstable)] 是否接受該解決方案?[Y/n/q/?] Y // **在這裡選擇降級的方案** 下列軟體包將被“降級”: libasound2 下列“新”軟體包將被安裝。 libasound2-dev 0 個軟體包被升級,新安裝 1 個,1 個被降級,0 個將被刪除, 同時 2 個將不升級。 需要獲取 411 kB 的存檔。解包後將要使用 329 kB。 您要繼續嗎?[Y/n/?] Y 讀取: 1 https://mirrors.tuna.tsinghua.edu.cn/raspbian/raspbian/ jessie/main libasound2 armhf 1.0.28-1 [316 kB] 讀取: 2 https://mirrors.tuna.tsinghua.edu.cn/raspbian/raspbian/ jessie/main libasound2-dev armhf 1.0.28-1 [94.9 kB] 已下載 411 kB,耗時 0秒 (440 kB/s) dpkg:警告:即將把 libasound2:armhf 從 1.0.28-1+rpi2 降級到 1.0.28-1 (正在讀取資料庫 ... 系統當前共安裝有 119680 個檔案和目錄。) 正準備解包 .../libasound2_1.0.28-1_armhf.deb ... 正在將 libasound2:armhf (1.0.28-1) 解包到 (1.0.28-1+rpi2)... 正在選中未選擇的軟體包 libasound2-dev:armhf。 正準備解包 .../libasound2-dev_1.0.28-1_armhf.deb ... 正在解包 libasound2-dev:armhf (1.0.28-1) ... 正在處理用於 libc-bin (2.19-18+deb8u10) 的觸發器 ... 正在設定 libasound2:armhf (1.0.28-1) ... 正在設定 libasound2-dev:armhf (1.0.28-1) ... 正在處理用於 libc-bin (2.19-18+deb8u10) 的觸發器 ...

最後檢查一下是否成功安裝

[email protected]:~ $ dpkg -s libasound2-dev
Package: libasound2-dev
Status: install ok installed
Priority: optional
Section: libdevel
Installed-Size: 380
Maintainer: Debian ALSA Maintainers <[email protected]>
Architecture: armhf
Multi-Arch: same
Source: alsa-lib
Version: 1.0.28-1
Provides: libasound-dev
Depends: libasound2 (= 1.0.28-1)
Suggests: libasound2-doc
Description: shared library for ALSA applications -- development files
 This package contains files required for developing software
 that makes use of libasound2, the ALSA library.
 .
 ALSA is the Advanced Linux Sound Architecture.
Homepage: http://www.alsa-project.org/