更新損壞和軟體包混亂:如何手動刪除舊軟體包?

更新損壞和軟體包混亂:如何手動刪除舊軟體包?

從 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(有些部分可能有點過時;沒關係)

相關內容