340

How can I downgrade a package to an older version via apt-get?

Other tools are also acceptable but apt-get is preferred.

| improve this question | |
124

USE

apt-get install «pkg»=«version»

OR

sudo aptitude install «pkg»=«version»

Where «pkg» is the name of the package, and «version» is the version number.

| improve this answer | |
  • 5
    when i type apt-get install pkg=version apt-get offers removing almost half of all installed packages which of course not what i want to do – Dfr Jul 15 '15 at 8:38
  • 2
    As pointed in the (otherwise identical) answer with more votes, this seems to be one of the key cases where aptitude does a much better job than apt-get. In my case apt-getflatly refused the downgrade request, whereas aptitude pointed out that there were other pkgs which depended on the newer version (and thus needed downgrading at the same time). – sxc731 Apr 12 '18 at 18:02
332

If you have the version number, or the target release, apt-get supports choosing a particular version or target release. More details can be found on manual page of apt-get. It can also be accessed from terminal by typing man apt-get

sudo apt-get install <package-name>=<package-version-number> OR

sudo apt-get -t=<target release> install <package-name>

is the command to be run. This can be used to down-grade a package to a specific version.

Remark that when using a target release (option -t), the release priority must greater than 1000 to allow downgrades (see man 5 apt_preferences) otherwise the currently installed version will be kept.

It has been helpfully pointed out in the comments that

  • apt-cache showpkg <package-name> lists all available versions. (h/t Sparhawk)
  • apt-mark hold <package-name> "holds" the package at the current version, preventing automatic upgrades. (h/t Luís de Sousa )
| improve this answer | |
30

If you have upgraded software using ppa you can downgrade it by using ppa-purge. First you have to install ppa-purge using this code:

sudo apt-get install ppa-purge

Then you can remove the ppa using command

sudo ppa-purge ppa:user/ppa-name

this will automatically downgrade the software to its original version which shipped with Ubuntu.

| improve this answer | |
  • 2
    This solution is just unmatched in case the package has dependencies which also have to be downgraded. Thanks! – and Aug 10 '17 at 10:27
  • 1
    Yes this is the solution that worked best for me for downgrading KDE/Plasma desktop from kubuntu-ppa/backports - one thing I noticed is the PPA's .list file must not have the deb commented out, so ppa-purge can reference all the files that need to be removed for the purge. Took me a minute to figure out why it wasn't working at first. Hope that helps other people! – AveryFreeman Aug 23 '19 at 20:24
11

To downgrade you have to do a command like

 sudo apt-get install pkg_name=version

in your terminal.

In the place of version put the previous version you want to downgrade to.

| improve this answer | |
10

In my opinion, you should first uninstall or purge the package, like:

sudo apt-get remove <package>

or

sudo apt-get purge <package>

Then, you may download the version you would like to install and keep it in a folder, say abc.deb in Downloads. Open terminal, move to the folder using cd command and install the previous version using dpkg:

sudo dpkg -i abc.deb

Or else, there is a small utility called ppa-purge if you mean to downgrade packages updated via PPAs.

See this thread: http://www.webupd8.org/2009/12/remove-ppa-repositories-via-command.html

| improve this answer | |
2

This question is old but google led me here and I didn't found simple soulution that don't require manual version passing when downgrading bunch of packages to older release.

So maybe someone who also need that will find useful my solution too.

There is a tool called apt-show-versions that shows versions installed.

Run $ sudo apt-show-versions -i if package cache is outdated.

You can easily downgrade all required packages by fine-tuning regex but here it is:

$ sudo apt-get install $(apt-show-versions | grep -P 'newer than version in archive' | awk -F: '{print $1"/'$(lsb_release -cs)'"}')

You shoulld have lsb-release installed for the latter.

| improve this answer | |
  • Or automatically downgrade to up-to-date installed release: sudo apt-get install -V $(apt-show-versions | grep -F 'newer than version in archive' | awk -F: '{print $1"/'$(lsb_release -cs)'"}'). I prefer using -F for grep here. – jarno Sep 15 '19 at 22:24
  • You should run sudo apt-show-versions -i first, if the package cache is out of date. – jarno Sep 15 '19 at 22:38
  • sudo: apt-show-versions: command not found with Ubuntu 16.04 LTS – XavierStuvw Apr 19 at 15:52