如何正确使用apt的autoremove命令移除冗余的自动安装依赖?
嘿,我来给你捋清楚怎么用apt autoremove高效清理冗余依赖,先从APT的配置说起——我在/etc/apt/apt.conf.d/99recommends-and-suggests这个文件里设置了这些规则:
APT::Install-Recommends "true"; APT::Install-Suggests "false"; APT::AutoRemove::RecommendsImportant "true"; APT::AutoRemove::SuggestsImportant "false";
先拆解下这些配置的作用:
APT::Install-Recommends "true":安装软件时默认会顺带装推荐包,这类包大多能补全软件的实用功能,提升使用体验APT::Install-Suggests "false":不会自动安装建议包,这些是可选的扩展功能,非软件运行必需APT::AutoRemove::RecommendsImportant "true":标记重要的推荐包为不可自动移除项,避免误删关键功能依赖APT::AutoRemove::SuggestsImportant "false":所有建议包都会被视为可清理的冗余项,只要没有其他软件依赖它们
拿inxi这个工具包举个例子,用apt-cache depends inxi能看到它完整的依赖结构:
inxi
Depends: pciutils
Depends: procps
Depends: perl:any
perl
Recommends: dmidecode
Recommends: dnsutils
bind9-dnsutils
Recommends: file
|Recommends: iproute2
Recommends: net-tools
Recommends: kmod
Recommends: lm-sensors
Recommends: mesa-utils
|Recommends: sudo
sudo-ldap
Recommends: doas
opendoas
Recommends: tree
Recommends: usbutils
Recommends: x11-utils
Recommends: x11-xserver-utils
Suggests: libxml-dumper-perl
|Suggests: wget
|Suggests: curl
Suggests: libhttp-tiny-perl
perl
从这个输出能明确三类依赖的区别,以及autoremove的清理逻辑:
- Depends(必需依赖):比如pciutils、procps这类,是inxi运行的核心基础,
autoremove绝对不会触碰它们 - Recommends(推荐依赖):比如iproute2、net-tools这类,因为我们开了自动安装推荐包,装inxi时会自动带上;如果之后inxi被卸载,这些推荐包要是没有被其他软件依赖,就会被
autoremove判定为冗余清理掉,但如果某个推荐包同时是其他软件的必需依赖,就会被保留 - Suggests(建议依赖):比如wget、curl这类,我们没开自动安装,就算手动装了,只要没有其他软件需要它们,
autoremove会直接把它们清掉
最后给你几个实用的使用技巧:
- 直接执行
sudo apt autoremove就能一键清理符合规则的冗余依赖 - 怕误删的话,可以先模拟执行看效果:
sudo apt autoremove --simulate,只会输出拟删除列表,不会真的改动系统 - 要是你手动安装了某个推荐包(比如特意装了net-tools),它会被标记为「手动安装」,
autoremove不会动它;如果之后想让它变回自动安装状态,用sudo apt-mark auto net-tools就行,下次autoremove就会按规则判断是否清理它
备注:内容来源于stack exchange,提问作者hurryman2212

