Debian
如何從反向埠手動列出已安裝的軟體包?
我需要從後端獲取手動安裝的軟體包列表,以便“完成”序列
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
和合作。自己不能使用這些資訊。