我需要从向后移植中获取手动安装的软件包列表,以便“完全的”序列apt-get upgrade && apt-get dist-upgrade
。以下命令列出了从向后移植手动安装的软件包:
$ # 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
.
如何获取我真正手动安装的列表?
答案1
命令aptitude
是准确:它列出了当前安装的所有软件包(来自向后移植),并且未标记为自动安装。
事实上,这不会输出您期望的结果,这是另一个问题,我们无法为您解决这个问题。某些原因导致您的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
和co。自己无法使用该信息。