Aptitude - 删除 X11 类别中的所有包,特定包的依赖项除外

Aptitude - 删除 X11 类别中的所有包,特定包的依赖项除外

我想从我的系统中删除 X11 类别中的大部分软件包。然而,其中一些软件包依赖于“beaglebone”软件包。我怎样才能要求 aptitude 删除 X11 类别中的所有内容,除了“beaglebone”依赖的软件包之外?

您可以在下面看到它建议将“beaglebone”作为应该卸载的软件包之一,以免被破坏。

    aptitude 建议删除。包括 Beaglebone。

如何确保删除后保留该包及其依赖项?

答案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-markhold特点。

   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.

相关内容