避免从metapackage安装一些包

我想安装xubuntu-desktop (一个非常大的元数据包),但xubuntu-desktop了一些软件包(大约10个)。 我这样做的当前方式分为两步:1)安装元数据包,2)清除不需要的包。 我想知道是否有更有效和干净的方法来做到这一点。

我认为apt-get会接受像安装这样的指令, 除了这些,但非常令人惊讶的是它似乎没有。

一个潜在的解决方案是运行命令sudo apt-get install xubuntu-desktop ,然后选择No ,并复制终端中列出的所有软件包,手动删除不需要的软件包。 然而,这可能比前面提到的两步程序更耗时,也有可能最终导致错误的依赖。

有关如何在一个简单的命令行指令中进行此操作的任何想法?

您可以编写任务脚本。 我很确定我在其他地方发布了这个,但现在找不到了。 首先,使用您不想要的包创建一个文件。 例如:

 $ cat dont-want.txt memtest86+ wireless-tools firefox evince 

然后解析apt-cache depends的输出apt-cache depends

 apt-cache depends xubuntu-desktop | awk '$1 == "Depends:" {print $2}' | grep -vFf dont-want.txt 

这应该包括元数据包直接依赖的包,而不包括您排除的包。 然后你可以使用xargs来安装:

 apt-cache depends xubuntu-desktop | awk '$1 == "Depends:" {print $2}' | grep -vFf dont-want.txt | sudo xargs apt-get install 

如果不需要的包不是直接依赖,则需要使用apt-rdepends而不是apt-cache depends

您还可以使用Apt Pinning来强制禁止: 如何禁止安装特定的软件包?