![Aptitude - 删除 X11 类别中的所有包,特定包的依赖项除外](https://linux22.com/image/38094/Aptitude%20-%20%E5%88%A0%E9%99%A4%20X11%20%E7%B1%BB%E5%88%AB%E4%B8%AD%E7%9A%84%E6%89%80%E6%9C%89%E5%8C%85%EF%BC%8C%E7%89%B9%E5%AE%9A%E5%8C%85%E7%9A%84%E4%BE%9D%E8%B5%96%E9%A1%B9%E9%99%A4%E5%A4%96.png)
答案1
简短的回答是:
aptitude remove '~sX11 ! ~Rbeaglebone'
然而在这种情况下(有一个很多依赖于 X11 的东西!),我建议使用交互式解析器。要执行此操作,请将--schedule-only
选项添加到上面,然后在aptitude
不带参数的情况下再次运行。您可能还需要添加-o Aptitude::Auto-Fix-Broken=false
一个或两个命令(如果它尚未在您的设置中),但我认为您不需要它我可以看到只有当您g按界面时才会发生自动解析。
运行 ncurses 界面后,按e检查第一个解决方案并查看其他删除内容。如果您看到任何不想要的内容,请使用箭头键选择它,然后按r拒绝该操作。按.加载下一个解决方案,它现在应该提供一个不包含任何您拒绝的解决方案。根据需要重复并按!接受解决方案并正常继续。
答案2
我相信您可以使用以下方法之一来“排除”包“beaglebone”,这将强制保留其任何依赖项。
$ sudo apt-mark hold <package>
或者
$ echo <package> hold | sudo dpkg --set-selections
第一个利用apt-mark
其hold
特点。
hold
hold is used to mark a package as held back, which will prevent the
package from being automatically installed, upgraded or removed. The
command is only a wrapper around dpkg --set-selections and the state
is therefore maintained by dpkg(1) and not affected by the --file
option.
第二个用于dpkg
将包标记为“保留”。
--set-selections
Set package selections using file read from stdin. This file should
be in the format 'package state', where state is one of install,
hold, deinstall or purge. Blank lines and comment lines beginning
with '#' are also permitted.