
從 16.04 切換到 18.04後do-release-upgrade
,出現了一些故障,機器處於「中間」狀態,存在許多損壞的依賴關係問題。我的包樹一團糟,我很絕望......;-)
我嘗試了很多東西(包括dpkg --configure -a
隨機刪除帶有 的包dpkg --force depends -P <pkg-name>
以及其他東西),但我目前有點陷入困境。
所以,當我嘗試時:
$ sudo apt --fix-broken install
Reading package lists... Done
Building dependency tree
Reading state information... Done
Correcting dependencies... Done
The following packages were automatically installed and are no longer required:
(here 20 lines)
The following additional packages will be installed:
... (here 5 lines)
Suggested packages:
... more
Recommended packages:
... more
The following packages will be REMOVED:
... more
The following NEW packages will be installed:
... more (10 lines)
28 upgraded, 6 newly installed, 1 to remove and 327 not upgraded.
228 not fully installed or removed.
Need to get 0 B/13,3 MB of archives.
After this operation, 2 771 kB of additional disk space will be used.
Do you want to continue? [Y/n]
到這裡為止,我什麼都不怕了。但現在,輸入Y
:
Extracting templates from packages: 100%
(Reading database ... 977800 files and directories currently installed.)
Removing ubuntu-advantage-tools (27.0.2~18.04.1) ...
Traceback (most recent call last):
File "<string>", line 2, in <module>
File "/usr/lib/python3/dist-packages/uaclient/apt.py", line 9, in <module>
from uaclient import gpg
File "/usr/lib/python3/dist-packages/uaclient/gpg.py", line 3, in <module>
import shutil
ModuleNotFoundError: No module named 'shutil'
dpkg: error processing package ubuntu-advantage-tools (--remove):
installed ubuntu-advantage-tools package pre-removal script subprocess returned error exit status 1
Errors were encountered while processing:
ubuntu-advantage-tools
E: Sub-process /usr/bin/dpkg returned an error code (1)
所以這聽起來像是一個Python錯誤,據我了解,它找不到shutil
.所以我手動下載了我認為的東西:
https://packages.ubuntu.com/bionic/python-backports-shutil-get-terminal-size
並手動安裝:
sudo dpkg -i python-backports-shutil-get-terminal-size_1.0.0-5_all.deb
但再做apt --fix-broken install
一次,結果還是一樣。
我對 Python 的了解有限,所以我不能確定這是真正的問題,但歡迎任何幫助。否則,下一步可能會從頭開始重新安裝,但我真的更願意避免這種情況。
目前我可以手動安裝軟體包(從https://packages.ubuntu.com/然後dpkg -i
)但僅此而已,其他一切都失敗了。
例如,如果我嘗試安裝libpython3.6-stdlib
:
$ sudo apt-get install libpython3.6-stdlib
我得到:
libpython3.6-stdlib : Depends: libpython3.6-minimal (= 3.6.9-1~18.04ubuntu1.4) but 3.6.13-1+xenial2 is to be installed
這意味著我仍然有 16.04 (Xenial) 的軟體包。
我怎樣才能手動消除所有 16.04 軟體包?
附加資訊(機器現在僅透過控制台啟動):
$ python --version
=>Python 3.6.13$ lsb_release -a
不可用$ uname -a
告訴我它是 4.15 核心(看起來與 18.04 一致)
答案1
FWIW:關鍵點實際上在這裡:
dpkg: error processing package ubuntu-advantage-tools (--remove):
installed ubuntu-advantage-tools package pre-removal script subprocess returned error exit status 1
整個過程失敗是因為套件的“預先刪除”腳本失敗ubuntu-advantage-tools
(不知道那是什麼!)。
所以我做了:
$ sudo mv /var/lib/dpkg/info/ubuntu-advantage-tools.prerm /var/lib/dpkg/info/ubuntu-advantage-tools.prerm_OLD
我能夠完成sudo apt --fix-broken install
命令。
重新啟動,然後使用解決了另一個問題(鍵盤無法識別)另一個問題,在恢復模式下啟動後:
$ sudo apt-get install xserver-xorg-input-all
終於能夠以圖形方式啟動了,但是...仍然引用 xenial (16.04) 的套件管理器仍然存在一些問題。我將發布另一個問題。
答案2
這聽起來像是一個非常病態的系統。您可能想擺脫它的痛苦,即重新安裝。如果您還沒有單獨的/home
檔案系統,請複製您的主目錄和您投入工作的所有內容,然後重新開始以再次獲得乾淨的系統。
我還會複製/etc
以防萬一某些重要的配置文件值得挽救(但除非絕對必要,否則我不會將其複製到新系統)。
可以這樣想:該系統在很長一段時間內為您提供了良好的服務(2016 年之後的某個時候,因為它是 16.04);讓它安息吧。 ;-) 現在是時候嘗試一些新的、乾淨的東西了。
我曾經為自己製作了一份清單,我對新安裝的 Ubuntu 做了哪些操作,以使其達到我認為最可用的狀態;或許你可以從中得到一些啟發:https://github.com/shundhammer/huha-linux-tips/blob/master/doc/ubuntu-tips.md(有些部分可能有點過時;沒關係)