How can I downgrade a package to an older version via apt-get?
Other tools are also acceptable but apt-get is preferred.
How can I downgrade a package to an older version via apt-get?
Other tools are also acceptable but apt-get is preferred.
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 )Use:
apt-get install «pkg»=«version»
or:
sudo aptitude install «pkg»=«version»
Where:
«pkg» is the name of the package.«version» is the version number.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 08:38
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
apt list -a <pkg> to find out what versions are available
– Nero Vanbiervliet
Sep 20 '21 at 09:20
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.
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
unstable -> testing -> stable not to downgrade individual packages.
– Braiam
Oct 09 '13 at 17:50
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.
linux-generic is a meta package, not a package. Kernel packages in ubuntu always have a version as part of the package like linux-image-5.15.0-100-generic with version 5.15.0-100.110~20.04.1 i.e. linux-image-5.15.0-100-generic-5.15.0-100.110~20.04.1. So kernel packages are never updates, but independently named packages. This allows for multiple versions of the kernel to be installed together. It also *doesn't break the system by removing mods of the running kernel* . Your issue is that you tried installing separate kernel packages with conflicting dependencies.
– Samveen
Mar 21 '24 at 04:31
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.
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
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).
– Reuben Thomas
Oct 20 '21 at 14:43
aptitudedowngraded the dependencies better thanapt-get. – krispy Mar 01 '16 at 17:25apt-cache policy <package-name>shows just the installed and available versions – Michael Lawton Aug 13 '16 at 20:56showpkgdoes not show the version you are interested in? – demongolem Jun 20 '17 at 15:41bashto4.4.18-2ubuntu1; bothaptitudeandapt-getrefuse to do so as they two believe that there is no such a version. Did you find any solution? – Naghi Aug 23 '20 at 11:16--allow-downgradesif doing this with-y– alfalfasprout Jul 27 '22 at 18:58