How to downgrade a package via apt-get?
Solution 1
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 )
Solution 2
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.
Solution 3
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
Solution 4
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.
Solution 5
This question is old but Google led me here and I didn't find simple solution that does't require manual version passing when downgrading a bunch of packages to an older release.
So maybe someone who also needs that will find my solution useful as well.
There's a tool called apt-show-versions
that shows versions installed. To install it:
$ sudo apt install apt-show-versions
Make sure APT's cache is up to date:
$ sudo apt-show-versions -i
You can easily downgrade all required packages by fine-tuning the 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 should have lsb-release
installed for the latter.
Related videos on Youtube
Zanna
Updated on September 18, 2022Comments
-
Zanna over 1 year
How can I downgrade a package to an older version via
apt-get
?Other tools are also acceptable but
apt-get
is preferred. -
type almost 12 yearsremoving a package may remove many dependent ones, resulting in an unusable system. ppapurge sounds interesting though.
-
Eliah Kagan over 11 yearsCan you explain why you believe we ought to first uninstall packages (as a separate step) before installing older versions of them?
-
temoto over 10 years
-
Braiam over 10 years@temoto that link is for downgrading releases
unstable
->testing
->stable
not to downgrade individual packages. -
Admin almost 9 yearswhen 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 -
krispy about 8 yearsI found that
aptitude
downgraded the dependencies better thanapt-get
. -
Michael Lawton almost 8 years
apt-cache policy <package-name>
shows just the installed and available versions -
demongolem almost 7 yearsAnd what if
showpkg
does not show the version you are interested in? -
and almost 7 yearsThis solution is just unmatched in case the package has dependencies which also have to be downgraded. Thanks!
-
Admin about 6 yearsAs 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 thanapt-get
. In my caseapt-get
flatly refused the downgrade request, whereasaptitude
pointed out that there were other pkgs which depended on the newer version (and thus needed downgrading at the same time). -
mymedia over 5 yearsIt doesn't work at least for linux-generic which depends on packages that should be downgraded too. I get paste.ubuntu.com/p/NWSmf2ZwTy
-
AveryFreeman over 4 yearsYes 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!
-
jarno over 4 yearsOr 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
forgrep
here. -
Alish over 3 years@demongolem Based on jozxyqk comment, I want to downgrade my
bash
to4.4.18-2ubuntu1
; bothaptitude
andapt-get
refuse to do so as they two believe that there is no such a version. Did you find any solution? -
Zulakis over 3 yearsThank you, this is incredibly helpful!
-
m13r about 3 yearsSome depending packages may have to be purged before installing a specific version of the desired package...
-
Admin over 2 yearsHint: run
apt list -a <pkg>
to find out what versions are available -
Reuben Thomas over 2 years@jarno thanks for the incantation; I adjusted it to work for packages that come in multiple arch flavors on the same platform (e.g. libc6):
sudo apt-get install -V $(apt-show-versions | grep -F 'newer than version in archive' | awk -F' ' '{print $1"/'$(lsb_release -cs)'"}')
(just change the separator for awk from colon to space).