-
sudo apt update
-
sudo apt install build-essential
主要是說 build-essential 中包含了 GNU 編輯器集合,GNU調試器和其他編譯軟件所必須的開發庫和工具。
結果,報錯了。
我一開始想到的是直接上博客搜,查到兩種解決方案:
-
殺死之前的進程
查出與 apt 相關的進程,然后直接關了。
ps -e|grep apt
然后將進程殺死:
但是我的下載依舊報錯;因此我采用了第二種方法。
-
強制解鎖
按照別人的博客所說,刪除以下兩個文件就行了,如下所示:
sudo rm /var/cache/apt/archives/lock
sudo rm /var/lib/dpkg/lock
但是我依舊報錯:
~$ sudo apt install build-essential
E: 無法獲得鎖 /var/lib/dpkg/lock-frontend - open (11: 資源暫時不可用)
E: 無法獲取 dpkg 前端鎖 (/var/lib/dpkg/lock-frontend),是否有其他進程正占用它?不急,慢慢來。
這時我發現報錯里貌似有指明沖突在哪,於是我試了試直接強制解鎖這里的:
sudo rm /var/lib/dpkg/lock-frontend
再安裝試試?
~$ sudo apt-get install build-essential
E: dpkg 被中斷,您必須手工運行 ‘sudo dpkg --configure -a’ 解決此問題。行,那就運行吧。
~$ sudo dpkg --configure -a
dpkg: 錯誤: 另外一個進程已經為 dpkg 狀態數據庫 加鎖額,,,不慌,於是我試了試 apt-get 而不是直接用 apt 安裝:
~$ sudo apt install build-essential
正在讀取軟件包列表... 完成
正在分析軟件包的依賴關系樹
正在讀取狀態信息... 完成
有一些軟件包無法被安裝。如果您用的是 unstable 發行版,這也許是
因為系統無法達到您要求的狀態造成的。該版本中可能會有一些您需要的軟件
包尚未被創建或是它們已被從新到(Incoming)目錄移出。
下列信息可能會對解決問題有所幫助:
下列軟件包有未滿足的依賴關系:
build-essential : 依賴: dpkg-dev (>= 1.17.11) 但是它將不會被安裝
E: 無法修正錯誤,因為您要求某些軟件包保持現狀,就是它們破壞了軟件包間的依賴關系。我本以為是部分軟件版本的問題,於是我又跑了一遍 sudo apt install update,但是看起來事情並沒這么簡單
~$ sudo apt update
命中:1 http://security.ubuntu.com/ubuntu bionic-security InRelease
命中:2 http://cn.archive.ubuntu.com/ubuntu bionic InRelease
命中:3 http://cn.archive.ubuntu.com/ubuntu bionic-backports InRelease
正在讀取軟件包列表... 完成
正在分析軟件包的依賴關系樹
正在讀取狀態信息... 完成
所有軟件包均為最新。~$ sudo apt install build-essential
正在讀取軟件包列表... 完成
正在分析軟件包的依賴關系樹
正在讀取狀態信息... 完成
有一些軟件包無法被安裝。如果您用的是 unstable 發行版,這也許是
因為系統無法達到您要求的狀態造成的。該版本中可能會有一些您需要的軟件
包尚未被創建或是它們已被從新到(Incoming)目錄移出。
下列信息可能會對解決問題有所幫助:
下列軟件包有未滿足的依賴關系:
build-essential : 依賴: dpkg-dev (>= 1.17.11) 但是它將不會被安裝
E: 無法修正錯誤,因為您要求某些軟件包保持現狀,就是它們破壞了軟件包間的依賴關系。看來並不是這里的問題,再去網上找找有沒有大佬遇到過類似的問題吧。然后就找到了:
-
移除 libdpkg-perl 這個軟件:
~$ sudo apt-get remove libdpkg-perl
-
再安裝 libdpkg-perl:
~$ sudo apt-get install libdpkg-perl
-
再安裝build-essential:
~$ sudo apt-get install build-essential
至此,問題解決。
-
總結:
有問題可以上網查,但別看都不看直接拿來用,有一點差異的話直接復制粘貼是無法解決的,我在殺死進程和強制解鎖那邊其實繞了很久,如果直接放進來的話還是太長了。總之,查問題需要結合自己的報錯來看,終端的報錯才是解決問題的關鍵。
參考: