如何使用 apt-get 从安装中排除特定软件包?

Nic*_*hov 14 package-management apt metapackages

我想从安装中排除特定的包apt-get,也就是说,安装一个没有特定包列表的元包,最好是调用一次apt-get.

例如,在 Ubuntu 14.04 LTS 命令行中,我正在安装 MATE 桌面环境。在 14.04 LTS MATE 不是官方版本,所以我添加了一个 PPA:

sudo apt-get install software-properties-common # need them for 'apt-add-repository'
sudo apt-add-repository ppa:ubuntu-mate-dev/ppa
sudo apt-add-repository ppa:ubuntu-mate-dev/trusty-mate
sudo apt-get update
Run Code Online (Sandbox Code Playgroud)

然后安装:

sudo apt-get install xorg mate-core --no-install-recommends
Run Code Online (Sandbox Code Playgroud)

即使没有推荐的附加功能,也会mate-core安装 3 个终端模拟器:xtermuxtermmate-terminal ,后者在以这种最小配置安装时缺少适当的字体。

假设我决定 3 个终端程序太多,我想安装xorgmate-core 没有 xtermmate-terminal。我可以

sudo apt-get install xorg mate-core --no-install-recommends
sudo apt-get purge xterm mate-terminal
Run Code Online (Sandbox Code Playgroud)

但是可以一次性完成吗?有没有像这样的语法

sudo apt-get install xorg mate-core --without xterm mate-terminal
Run Code Online (Sandbox Code Playgroud)

cku*_*jau 7

所以,队友核心 依赖mate-desktop-environment-core后者又取决于mate-terminal。一个依赖不能容易破碎。也不是apt-get也不aptitude支持--without--exclude选项和“持有”的程序包将无法帮助:

$ echo "mate-terminal hold" | 须藤 dpkg --set-selections
$ sudo apt-get install mate-core
[...]
某些软件包无法安装...
以下软件包具有未满足的依赖项:

当然,可以dpkg --force-depends用来安装软件包,但这可能不是您想要的。

一种可能性是Depends:用一个虚拟包来填充标志:

$ sudo apt-get install equivs
$ equivs-control mate-terminal
$ vi 伴侣终端
部分: 杂项
优先级:可选
标准版本:3.9.2
封装:mate-terminal
版本:1.8.0
描述:用于配对终端的虚拟封装
:X

$ equivs-build mate-terminal
$ sudo dpkg -i mate-terminal_1.8.0_all.deb

现在mate-core应该可以安装 w/o 了mate-terminal。对要排除的其他包重复相同的操作。

诚然,这是一项相当大的努力,一个--without选项会很好。也许将来可以打开一个愿望清单错误以提供此类功能,但我以某种方式怀疑这是否会实现。

然而,一个更现实的选择是请求PPA 所有者为 MATE 提供另一个带有较少Depends包集的元包。


eMP*_*584 6

对于这样的场景有一种特殊的apt语法:在包中附加连字符(减号)将删除/不安装它,因此最接近您的是sudo apt-get install xorg mate-core --without xterm mate-terminal ( 在https://askubuntu.com/a/1011439/182923sudo apt-get install xorg mate-core xterm- mate-terminal- 上发现)

在这种情况下它不会有帮助,因为你会遇到

The following packages have unmet dependencies:
 mate-desktop-environment-core : Depends: mate-terminal (>= 1.20) but it is not going to be installed                                                                        
E: Unable to correct problems, you have held broken packages.
Run Code Online (Sandbox Code Playgroud)

但这似乎是您具体问题的答案。因此,作为参考,此交叉帖子。