如何阻止 aptitude(或 apt-get)安装特定版本的软件包?

如何阻止 aptitude(或 apt-get)安装特定版本的软件包?

我遇到程序崩溃的问题,我怀疑只有最新版本的软件包才有这个问题,所以我希望阻止这个特定版本的安装 - 但我仍然希望能够升级到未来的版本。

我想我曾经读到过(在某个地方,某个时候)apt 系统允许这样做,但现在我寻找它时似乎无法找到它。

我该如何做这件事?

PS:我故意隐瞒了我遇到问题的软件包,因为我想了解 Apt 的这个特性(如果确实存在的话),并且不想要针对我遇到问题的程序的具体建议。

答案1

编辑/etc/apt/preferences文件并添加:

Package: unzip
Pin: version 2.7
Pin-Priority: 100

Package: unzip
Pin: version 3*
Pin-Priority: 1000

这将使包裹继续2.7, 跳过2.82.9并升级至3*有空的时候。

请注意,这是一个非自然的方式不升级到不稳定的软件包版本。一个更好的(和推荐方式) 是抓住直到问题得到解决为止:

软件包

$ echo "package hold" | sudo dpkg --set-selections

资质

$ sudo aptitude hold package_name 

答案2

aptitude 使用 forbid-version 选项允许这样做。

在 UI 中选择软件包的版本,然后按“F”

或者,您可以通过命令行界面执行此操作,请参阅手册页:

forbid-version
           Forbid a package from being upgraded to a particular version, while allowing automatic upgrades to future versions. This is useful for example to avoid a known broken version of a package,
           without having to set and clear manual holds.

           By default, aptitude will select the forbidden version to be the one which the package would normally be upgraded (the candidate version). This may be overridden by appending „=<version>“ to the
           package name: for instance, „aptitude forbid-version vim=1.2.3.broken-4“.

           To revert the action, „aptitude install <package>“ will remove the ban. To remove the forbidden version without installing the candidate version, the current version should be appended: „install
           <package>=<version>“.

请注意:此禁用版本仅受 aptitude 尊重。apt-get 或其他包管理器将在运行时升级该包。

答案3

您可以使用“apt-get install package-version”来安装该包的特定版本。

您可以使用 /etc/apt/preferences 的特定配置来阻止更新此版本。请参阅 3.10 部分:

APT 指南

您也可以使用 apt-mark 命令执行此操作。请参阅以下位置的“hold”选项:

Ubuntu 手册页

相关内容