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 个终端模拟器:xterm
、uxterm
和mate-terminal
,后者在以这种最小配置安装时缺少适当的字体。
假设我决定 3 个终端程序太多,我想安装xorg
而mate-core
没有 xterm
和mate-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)
所以,队友核心 依赖于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
包集的元包。
对于这样的场景有一种特殊的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)
但这似乎是您具体问题的答案。因此,作为参考,此交叉帖子。
归档时间: |
|
查看次数: |
14779 次 |
最近记录: |