首先,澄清术语:依赖<->反向依赖/依赖
我已经在我的无头RPI上安装了xvt,我不知道为什么它没有被自动删除。
$ sudo apt autoremove
Reading package lists... Done
Building dependency tree... Done
Reading state information... Done
0 upgraded, 0 newly installed, 0 to remove and 0 not upgraded.$ apt show xvt Package: xvt Version: 2.1-20.3
Priority: optional
Section: x11
Maintainer: Sam Hocevar (Debian packages)
Installed-Size: 85.0 kB
Provides: x-terminal-emulator
Depends: libc6 (>= 2.4), libx11-6
Suggests: menu
Conflicts: suidmanager (<< 0.50)
Download-Size: 36.3 kB
APT-Manual-Installed: no
APT-Sources: http://raspbian.raspberrypi.org/raspbian bullseye/main armhf Packages
Description: ...$ apt-cache rdepends --installed xvt
xvt
Reverse Depends:这些没有列出xvt
$ dpkg-query -Wf '${Package;-40}${Essential}\n' | grep yes
$ dpkg-query -Wf '${Package;-40}${Priority}\n' | grep -E "important"
$ dpkg-query -Wf '${Package;-40}${Priority}\n' | grep -E "required"
$ apt-config dump | grep '^APT::NeverAutoRemove::'$ apt-mark showmanual
bullseye-default
equivs
pihole-deps
smbclient
transmission-daemon
wireguard-tools
$ apt-mark showhold(除了显式依赖之外,我不喜欢debian使用列表和字段的方式,我发现它很难理解。因此,我创建了一个斗牛眼默认的元包。
还有什么其他机制可以阻止这个包被移除?
回到提出的问题,在本例中,我如何找到其他秘密冗余包(如xvt )?
$ dpkg -l xvt
Desired=Unknown/Install/Remove/Purge/Hold
| Status=Not/Inst/Conf-files/Unpacked/halF-conf/Half-inst/trig-aWait/Trig-pend
|/ Err?=(none)/Reinst-required (Status,Err: uppercase=bad)
||/ Name Version Architecture Description
+++-==============-============-============-=====================================>
ii xvt 2.1-20.3 armhf X terminal-emulator similar to xterm,发布于 2022-05-29 16:13:02
您的apt-cache rdepends输出表明,没有任何东西可以保持xvt包的安装,考虑到autoremove的行为,这是很奇怪的。
通常,要弄清楚为什么要保留给定的包,最好的工具是aptitude why:
aptitude why xvt(您可能需要先安装aptitude )。
若要列出在反向依赖项中没有手动安装包的所有包,请在模拟模式下运行apt autoremove,忽略推荐和建议的包:
sudo apt autoremove -s -o Apt::AutoRemove::SuggestsImportant=0 -o Apt::AutoRemove::RecommendsImportant=0注意,默认情况下,autoremove是不平衡的:默认情况下安装推荐的包,而不是建议的包;但是建议会阻止自动删除。详情请参见如何建议和建议与apt-获取dist升级和apt-搞到自动删除交互?。
发布于 2022-05-30 04:28:32
还有什么其他机制可以阻止这个包被移除?
您可以使用apt-mark hold防止包被自动升级或删除。
例如,如果另一个包与bullseye-default包所依赖的一个包发生冲突,这将是有用的。将bullseye-default标记为持有将阻止它被自动删除(因此,如果没有其他包依赖/推荐/建议它们,则会导致它所依赖的包成为自动删除的候选包)。
如果您需要升级bullseye-default,则必须手动进行此操作,然后记住再次运行apt-mark hold bullseye-default (因为升级包清除了保留状态)。
顺便说一句,apt-mark也可以用来改变包的自动/手动安装状态,例如apt-mark auto packagename或apt-mark manual packagename。它还可用于显示自动安装和手动安装的软件包列表:apt-mark showauto和apt-mark showmanual。
https://unix.stackexchange.com/questions/704272
复制相似问题