I used synaptic to lock the version of pidgin-data - how can I change the status from hold back to normal, so that it gets upgraded properly?

The PinningHowto says that doing an apt-get install packagename should remove the hold, but running dpkg -l | grep ^h still shows it as held:

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

How can I properly undo the hold status?


You can use sudo apt-mark unhold package_name. The package is unheld and it returns a confirmation: Canceled hold on package_name..

| improve this answer | |
  • 1
    Your sudo problem is probably because you wrote just sudo echo "package_name install"|dpkg --set-selections. This sudoes the echo but not the following pipe, hence the access error. Try this instead: sudo -E -- sh -c 'echo "package_name install"|dpkg --set-selections'. This sudoes a sub-shell whose command line is echo "package_name install"|dpkg --set-selections. – Urhixidur Sep 29 '14 at 14:24
  • 1
    My answer was somewhat related to the unedited version of the answer here below which previously included exactly the command I referenced. However the question specifically uses apt-get as an example and that is why I answered using apt-mark which is included in the apt package. It is however very helpful to know exactly why the dpkg commands were not working. – DrA7 Dec 16 '14 at 20:35
  • 1
    @DrA7 package_name was already not hold. What should I do now? – Dr.jacky Jan 30 '16 at 10:25
  • I had the same problem as @Dr.jacky, but when I try to apt upgrade it still tells me the same packages are being kept back! – Michael Oct 22 at 23:52

The correct way to remove the hold should be:

echo "package_name install"|sudo dpkg --set-selections
| improve this answer | |

To unhold all held packages, use this command:

apt-mark unhold $(apt-mark showhold)
| improve this answer | |

Unhold a single package named $package_name:

echo $package_name install | dpkg --set-selections

Unhold all packages that are currently held:

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

You can unhold all APT packages with:

apt-mark showhold | awk '{ print $1, "install" }' | dpkg --set-selections
| improve this answer | |

Run echo pidgin-data install | dpkg --set-selections (replace pidgin-data with the held package name) - this will change the package status to install rather than hold.

| improve this answer | |

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service, privacy policy and cookie policy

Not the answer you're looking for? Browse other questions tagged or ask your own question.