您如何解除(取消保留)包裹的资格?


49

我使用了突触来锁定的版本pidgin-data-如何将状态从hold恢复为正常,以便正确升级?

PinningHowto说,这样做的apt-get install packagename应该删除hold,但运行dpkg -l | grep ^h仍显示它认为:

hi  pidgin-data                                                 1:2.10.6-0ubuntu1+pidgin1.12.04                            multi-protocol instant messaging client - data files

如何正确撤消hold状态?

Answers:


59

您可以使用sudo apt-mark unhold package_name。该软件包未保存,并返回确认:Canceled hold on package_name.


1
您的sudo问题可能是因为您只写了sudo echo "package_name install"|dpkg --set-selections。这将使echo随后的管道(而不是随后的管道)变得司空见惯,因此会出现访问错误。请尝试以下方法:sudo -E -- sh -c 'echo "package_name install"|dpkg --set-selections'。这将使一个命令行为的子shell变得很特别echo "package_name install"|dpkg --set-selections
Urhixidur 2014年

1
我的回答是有点关系的的未经编辑的版本答案在这里低于其先前包括正是我所引用的命令。但是,该问题专门apt-get用作示例,这就是为什么我回答使用apt软件包中apt-mark包含的内容。但是,准确了解dpkg命令为何不起作用非常有帮助。
DrA7 2014年

@ DrA7 package_name尚未保留。我现在应该怎么办?
Dr.jacky '16

13

取消保留的正确方法应该是:

echo "package_name install"|sudo dpkg --set-selections

2

释放一个名为$ package_name的软件包:

echo $package_name install | dpkg --set-selections

取消当前持有的所有包裹:

dpkg --get-selections | grep hold | awk '{ print $1, "install" }' | dpkg --set-selections

1

运行echo pidgin-data install | dpkg --set-selectionspidgin-data用保留的软件包名称替换)-这会将软件包状态更改为,install而不是hold


1

您可以使用以下方法取消保留所有APT软件包:

apt-mark showhold | awk '{ print $1, "install" }' | dpkg --set-selections
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.