# How can you unhold (remove a hold on) a package?

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..

• 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
• 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
• @DrA7 package_name was already not hold. What should I do now? – Dr.jacky Jan 30 '16 at 10:25

The correct way to remove the hold should be:

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


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.

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  You can unhold all APT packages with: apt-mark showhold | awk '{ print$1, "install" }' | dpkg --set-selections