如何禁止安装特定的软件包?


27

我可以将Ubuntu配置为从不安装特定软件包,即使我安装的另一个软件包需要该软件包吗?


除非要破坏系统,否则不能安装没有依赖关系的软件包。
enzotib 2011年

2
@enzotib,首先您错了:程序包依赖项可能是多余的。有很多示例,或者您可以用另一种方式安装了所需软件包的等效项(例如,我安装了openjdk-6,因为存储库中的所有java应用程序都需要它,但是我从未真正使用过openjdk-6,设置所有内容以使用openjdk-7或Oracle JDK 7代替)。第二件事-我没有说我要安装相关软件包-在这种情况下,它可能会引发错误,我只是想确保始终都不会安装特定的软件包。
伊万

还有一个类似的问题
Nimmermehr

Answers:


28

作为Debian中,我们可以使用的apt-钉扎的版本和安装控制在Ubuntu了。

为了阻止给定软件包的安装,我们可以将以下行放入 /etc/apt/preferences

Package: <nameofpackage>
Pin: origin ""
Pin-Priority: -1

通过给此引脚一个负的优先级,我们将阻止<nameofpackage>未指定来源的安装,即我们的本地存储库。当然,我们可以使用apt-pinning来固定某个软件包版本或特定来源。

在继续之前,强烈建议您阅读上面给出的文档和apt_preferences的联机帮助页,因为apt不会检查这些文件中的错误,如果发生这些错误可能会破坏软件包管理。

作为替代方案,并防止更新给定的软件包,请参见:


您知道这是否可以在Ubuntu 12.04中工作吗?另一个问题是报告可能不起作用。
卢西奥

1
@Lucio:当然-它仍然有效;刚刚测试它也可以在12.10中工作。
塔卡特

3
在-行中Package:,您可以列出多个用空格分隔的软件包,如下所示:软件包:metacity metacity-common libmetacity-private0a。(似乎也可以使用Package,metacity *之类的模式)
Volker Siegel 2014年

5
在Ubuntu 16.04 Pin: origin ""中,它不适用于我,但适用于我Pin: release *
芭芭兹

3

在debian中,您可以阻止一个软件包,该软件包将不再升级

# echo name_of_package hold | dpkg --set-selections

但我不确定你可以禁止


我只是在Ubuntu 15.10(明智地)上尝试过,它并没有阻止该软件包。刚给我警告package not in database
布伦特·巴卡拉

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.