请求的命令

请求的命令

首先澄清一下术语:
依赖<->反向依赖/依赖

我已经xvt安装在无头 RPI 上,但我不明白它没有被自动删除的原因。

$ 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) <[email protected]>
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 使用列表和字段的方式,我发现它很晦涩。因此我创建了一个 bullseye-default 元包。)

还有什么其他机制可以防止这个包被删除?

回到提出的问题,我如何找到其他秘密冗余的包,就像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,

答案1

您的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-get dist-upgrade 和 apt-get autoremove 交互?了解详情。

答案2

还有什么其他机制可以防止这个包被删除?

您可以使用apt-mark hold它来防止包自动升级或删除。

bullseye-default例如,如果另一个包与您的包所依赖的包之一发生冲突,这将很有用。标记bullseye-default为保留将阻止它被自动删除(从而导致它所依赖的软件包成为自动删除的候选者,如果没有其他软件包依赖/推荐/建议它们)。

如果您需要升级bullseye-default,则必须手动执行此操作,然后记住apt-mark hold bullseye-default再次运行(因为升级包会清除保留状态)。

顺便说一句,apt-mark还可以用于更改软件包的自动/手动安装状态 - 例如apt-mark auto packagenameapt-mark manual packagename。它还可用于显示自动安装和手动安装的软件包列表:apt-mark showautoapt-mark showmanual

相关内容