如果我将一个包标记为hold
with echo "xyz hold" | sudo dpkg --set-selections
,然后显式使用apt upgrade xyz=1.2.3
该包,则该包将被标记为install
in dpkg --get-selections
。
有没有办法“永久”将包标记为hold
? - 我想更新它,但总是手动更新,并且永远不会作为其他更新的一部分。
我试着在网上查了一下,但我知道有 100 个帖子教你如何拿包裹。我也尝试过man apt
将您发送到man apt-get 8
但upgrade
没有真正指定有关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
除非请求特定版本,否则将永远不会成为升级的候选者。