升级标记为保留的软件包,在 dpkg --get-selections 中将其标记为安装

升级标记为保留的软件包,在 dpkg --get-selections 中将其标记为安装

如果我将一个包标记为holdwith echo "xyz hold" | sudo dpkg --set-selections,然后显式使用apt upgrade xyz=1.2.3该包,则该包将被标记为installin dpkg --get-selections

有没有办法“永久”将包标记为hold? - 我想更新它,但总是手动更新,并且永远不会作为其他更新的一部分。

我试着在网上查了一下,但我知道有 100 个帖子教你如何拿包裹。我也尝试过man apt将您发送到man apt-get 8upgrade没有真正指定有关hold-packages 的任何内容(或突然松开它们..) - 所以如果您可以提供有关该行为的资源,我也很高兴。


当我连续升级 3 个软件包到特定的“非最新”版本时,我有点绊倒,最后一个软件包获得了指定版本,但其他软件包突然变成了“最新”。

我可以在输出中看到它apt upgrade确实向我表明它还将升级其他软件包..我只是不想编写新的脚本,例如..

upgrade(){
  apt-get upgrade $1=$2
  echo "$1 hold" | dpkg --set-selection
}

......或者这是我正在寻找的解决方案?


这个问题最初发布在“askubuntu”上,但由于它没有获得任何流量,他们建议我删除该问题并将其发布在这里。

一位用户确实建议使用apt-mark.但这并没有解决我的问题,它只是简化了包裹的保存。

答案1

我认为没有办法通过包裹保留来做到这一点;但有一种不同的方法来阻止升级:您可以固定优先级为 -1 的程序包。创建一个/etc/apt/preferences.d包含以下内容的文件

Package: xyz
Pin: version *
Pin-Priority: -1

xyz除非请求特定版本,否则将永远不会成为升级的候选者。

相关内容