![避免从元包安装某些包](https://linux22.com/image/866888/%E9%81%BF%E5%85%8D%E4%BB%8E%E5%85%83%E5%8C%85%E5%AE%89%E8%A3%85%E6%9F%90%E4%BA%9B%E5%8C%85.png)
我想安装xubuntu-desktop
(一个非常大的元包),但要省去其中的一些包(大约 10 个)。我目前的做法是分两步:1)安装元包,2)清除不需要的包。我想知道是否有更高效、更干净的方法来做到这一点。
我以为apt-get
会接受这样的指令除了这些之外安装这个但令人惊奇的是,事实似乎并非如此。
一个潜在的解决方案是运行命令sudo apt-get install xubuntu-desktop
,然后选择不,并复制终端中列出的所有软件包,手动删除不需要的软件包。然而,这可能比前面提到的两步过程更耗时,而且还有可能导致依赖关系不完善。
关于如何在一个简单的命令行指令中完成此操作,有什么想法吗?
答案1
您可以编写该任务的脚本。我很确定我已将此内容发布到其他地方,但现在找不到了。首先,创建一个包含您不需要的软件包的文件。例如:
$ cat dont-want.txt
memtest86+
wireless-tools
firefox
evince
然后解析输出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 来强制执行禁令:如何禁止安装特定的包?