Debian
如何在依賴樹中列出沒有手動安裝包的包?
首先,澄清一下術語:
dependency <-> reverse dependency/dependent
我已經
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) <sam+deb@zoy.org> 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,
您的
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 互動?詳情。