首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何列出依赖树中没有手动安装包的包?

如何列出依赖树中没有手动安装包的包?
EN

Unix & Linux用户
提问于 2022-05-29 14:46:32
回答 2查看 229关注 0票数 0

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

我已经在我的无头RPI上安装了xvt,我不知道为什么它没有被自动删除。

代码语言:javascript
复制
$ 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.
代码语言:javascript
复制
$ 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: ...
代码语言:javascript
复制
$ apt-cache rdepends --installed xvt
xvt
Reverse Depends:

这些没有列出xvt

代码语言:javascript
复制
$ 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::'
代码语言:javascript
复制
$ apt-mark showmanual
bullseye-default
equivs
pihole-deps
smbclient
transmission-daemon
wireguard-tools
$ apt-mark showhold

(除了显式依赖之外,我不喜欢debian使用列表和字段的方式,我发现它很难理解。因此,我创建了一个斗牛眼默认的元包。

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

回到提出的问题,在本例中,我如何找到其他秘密冗余包(如xvt )?

请求的命令

代码语言:javascript
复制
$ 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,
EN

回答 2

Unix & Linux用户

回答已采纳

发布于 2022-05-29 16:13:02

您的apt-cache rdepends输出表明,没有任何东西可以保持xvt包的安装,考虑到autoremove的行为,这是很奇怪的。

通常,要弄清楚为什么要保留给定的包,最好的工具是aptitude why

代码语言:javascript
复制
aptitude why xvt

(您可能需要先安装aptitude )。

若要列出在反向依赖项中没有手动安装包的所有包,请在模拟模式下运行apt autoremove,忽略推荐和建议的包:

代码语言:javascript
复制
sudo apt autoremove -s -o Apt::AutoRemove::SuggestsImportant=0 -o Apt::AutoRemove::RecommendsImportant=0

注意,默认情况下,autoremove是不平衡的:默认情况下安装推荐的包,而不是建议的包;但是建议会阻止自动删除。详情请参见如何建议和建议与apt-获取dist升级和apt-搞到自动删除交互?

票数 0
EN

Unix & Linux用户

发布于 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 packagenameapt-mark manual packagename。它还可用于显示自动安装和手动安装的软件包列表:apt-mark showautoapt-mark showmanual

票数 0
EN
页面原文内容由Unix & Linux提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://unix.stackexchange.com/questions/704272

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档