Debian

如何從反向埠手動列出已安裝的軟體包?

  • January 26, 2021

我需要從後端獲取手動安裝的軟體包列表,以便“完成”序列apt-get upgrade && apt-get dist-upgrade。以下命令列出了從 backports 手動安裝的軟體包:

$ # based on: https://serverfault.com/a/109680/261445
$ aptitude search "?narrow(~i, ~Abackports) ?not(?automatic)" | sed 's/ - .*//'
i  btrfs-progs
i  checkinstall
i  linux-headers-5.9.0-0.bpo.2-amd64
i  linux-image-5.9.0-0.bpo.2-amd64
i  spl-dkms
i  zfs-dkms
i  zfsutils-linux

但是,我從來沒有給出過這樣的命令:

apt-get install -t buster-backports linux-image-5.9.0-0.bpo.2-amd64

所以輸出不准確。我通過命令安裝了核心,apt-get install -t buster-backports linux-image-amd64所以我希望得到linux-image-amd64而不是linux-image-5.9.0-0.bpo.2-amd64.

如何獲得我真正手動安裝的列表?

aptitude命令準確的:它列出了目前安裝的所有軟體包,來自 backports,並且未標記為自動安裝。

這不會輸出您期望的結果,這是另一個問題,我們無法為您解決。某些原因導致您的linux-image-amd64元軟體包恢復到 Debian 10 版本。大概在一個相關的事件中,毫無疑問,由於對目前活動核心和元包的保護,來自反向移植的實際核心映像和標頭包失去了它們的“自動”標記。

包裝系統只知道它的目前狀態,而不知道它是如何到達那裡的。

要解決您的潛在問題,您應該執行

sudo apt -t buster-backports install linux-{image,headers}-amd64

這會將元包升級到其向後移植的版本並安裝相應的真實包。

之後,apt upgrade將升級任何過時的向後移植版本*,而*無需您手動找出哪些軟體包來自向後移植。

如果您將舊核心包標記為自動安裝,您的系統將處於您希望它處於的狀態,並且該aptitude命令將給出您期望的輸出:

sudo apt-mark auto linux-{headers,image}-5.9.0-0.bpo.2-amd64

如果您真的想弄清楚發生了什麼,登錄/var/log/apt應該會告訴您,但是apt和合作。自己不能使用這些資訊。

引用自:https://unix.stackexchange.com/questions/630989