如何找出哪些没有安装候选的软件包可以被删除? (如何正确清理此类包?)

如何找出哪些没有安装候选的软件包可以被删除? (如何正确清理此类包?)

为了查找在我当前的存储库中没有安装候选的软件包,我运行了:(
apt-show-versions | grep "No available version in archive"按照建议这里
我认为最好是包管理器通知有人从存储库安装了一些包,但不再存在于任何当前存储库中。不过,这将是包管理器的一个(单独的)问题。

该命令返回诸如libgnome-keyring-common:allbum和 之类的包libgdbm3:amd64

现在我想知道其中哪些是我可以安全删除的。我知道我通过安装 .deb 文件安装了其中一些,并且不应删除这些文件。

我已经尝试运行sudo apt-cache show libgdbm3, sudo apt show libgdbm3sudo dpkg -p libgdbm3但它只显示(后一个命令):

Package: libgdbm3
Priority: important
Section: libs
Installed-Size: 68
Maintainer: Debian QA Group <[email protected]>
Architecture: amd64
Multi-Arch: same
Source: gdbm
Version: 1.8.3-14
Depends: libc6 (>= 2.14), dpkg (>= 1.15.4) | install-info
Filename: pool/main/g/gdbm/libgdbm3_1.8.3-14_amd64.deb
Size: 30042
MD5sum: 4bd924fc8be5471a12d1e0204c74d6c3
Description: GNU dbm database routines (runtime version)
Description-md5: 900375b4641d82391c1c951c3b8647f6
Homepage: http://directory.fsf.org/project/gdbm/
Tag: role::shared-lib
SHA256: fbce0e2500aa970ed03665d15822265ff8d31c81927b987ae34e206b9b5ab0b6

而不是这个包是如何安装的。当我跑步时,sudo apt-get remove gdbm我得到了E: Unable to locate package gdbm

如何正确清理没有安装候选的软件包?为什么当它们通过存储库安装但不再存在于当前存储库中时,它们不会自动删除或提示删除? (似乎每次更改存储库或完成升级时都应该执行此操作。)

系统是Debian10/KDE。

答案1

我建议将所有此类软件包标记为自动安装:

apt-show-versions | awk '/No available version in archive/ { print $1 }' | xargs sudo apt-mark auto

然后apt autoremove把能去掉的剔除掉;您需要检查列表并取消标记您想要保留的任何包 ( apt-mark manual)。

包裹可能会通过多种方式丢失其“自动”标记;特别是如果apt install曾经与它们一起使用过,例如升级它们或尝试找出它们被阻止的原因。没有“自动”标记的软件包不会成为删除的候选者,除非另一个软件包与它们冲突。即使是自动安装的包也可能比预期的保留时间更长:默认情况下,如果另一个包建议它们,它们将不会被删除(这是一个比任何会导致包被删除的依赖项更弱的依赖项)已安装首先,默认情况下)。

相关内容