If there are two (or more) versions of a given RPM available in a YUM repository, how can I instruct yum
to install the version I want?
Looking through the Koji build service I notice that there are several versions.
If there are two (or more) versions of a given RPM available in a YUM repository, how can I instruct yum
to install the version I want?
Looking through the Koji build service I notice that there are several versions.
To see what particular versions are available to you via yum
you can use the --showduplicates
switch . It gives you a list like "package name.architecture version":
$ yum --showduplicates list httpd | expand
Loaded plugins: fastestmirror, langpacks, refresh-packagekit
Loading mirror speeds from cached hostfile
* fedora: mirror.steadfast.net
Available Packages
httpd.x86_64 2.4.6-6.fc20 fedora
httpd.x86_64 2.4.10-1.fc20 updates
As far as installing a particular version? You can append the version info to the name of the package, removing the architecture name, like so:
$ sudo yum install <package name>-<version info>
For example in this case if I wanted to install the older version, 2.4.6-6 I'd do the following:
$ sudo yum install httpd-2.4.6-6
You can also include the release info when specifying a package. In this case since I'm dealing with Fedora 20 (F20) the release info would be "fc20", and the architecture info too.
$ sudo yum install httpd-2.4.6-6.fc20
$ sudo yum install httpd-2.4.6-6.fc20.x86_64
If you're ever unsure that you're constructing the arguments right you can consult with repoquery
too.
$ sudo yum install yum-utils # (to get `repoquery`)
$ repoquery --show-duplicates httpd-2.4*
httpd-0:2.4.6-6.fc20.x86_64
httpd-0:2.4.10-1.fc20.x86_64
You can also use one of the following options to download a particular RPM from the web, and then use yum
to install it.
$ yum --downloadonly <package>
-or-
$ yumdownloader <package>
And then install it like so:
$ sudo yum localinstall <path to rpm>
What if I want to download everything that package X requires?
$ yumdownloader --resolve <package>
$ yumdownloader --resolve vim-X11
Loaded plugins: langpacks, presto, refresh-packagekit
Adding en_US to language list
--> Running transaction check
---> Package vim-X11.x86_64 2:7.3.315-1.fc14 set to be reinstalled
--> Finished Dependency Resolution
vim-X11-7.3.315-1.fc14.x86_64.rpm | 1.1 MB 00:01
Notice it's doing a dependency check, and then downloading the missing pieces. See my answer that covers it in more details here: How to download a file from repo, and install it later w/o internet connection?.
Another option, you can download rpm
file then instruct yum
to do a localinstall
:
yum localinstall /path/to/package.rpm
A good place to get the packages you need is rpmfind.com and search the package name.
yum --downloadonly <package>
, followed by yum localinstall <path to package>
, too. You can also use the utility yumdownloader <package>
too.
– slm
Aug 23 '14 at 12:40
@updates
and the initial version for the OS located@fedora
. For example if you try to installhttpd-2.4.8-1
,yum
would say package not available. – Question Overflow Aug 23 '14 at 08:51python-libs-2.7.5-12.fc20.x86_64
was once installed on my computer but has since been replaced. Assuming now I want to install this specific package,yumdownloader python-libs-2.7.5-12*
would sayNo Match for argument python-libs-2.7.5-12* Nothing to download
. What I am trying to say is that once a new package arrive, the old one would no longer be accessible from yum. You can only install the latest package or the initial version, but not versions in between. – Question Overflow Aug 24 '14 at 04:13yum downgrade ...
if the package was already installed and you're attempting to go back to it later. In my Q I was attempting to show how one would hand select a particular version of a package that hadn't been installed yet. http://docs.fedoraproject.org/en-US/Fedora/14/html/Software_Management_Guide/ch05s06s03.html – slm Aug 24 '14 at 07:53yum update
, I usedyum install
. – slm Aug 24 '14 at 08:07rpm -qa | sort > installed
. Then after setting up the OS on my test server, I didyum install $(cat /tmp/installed)
. Some of the packages did not get installed because they are no longer available. – Question Overflow Aug 24 '14 at 08:12rpm -qa | sort > /tmp/installed
and then trying to replay that list into a new server. That's just not the appropriate way to make use ofrpm
oryum
, IMO. – slm Aug 24 '14 at 08:21yum install java-1.7.0-openjdk-devel-1:1.7.0.65-2.5.1.2.el6_5
. Is it due to the hyphens in the package name? – coderplus Mar 05 '15 at 17:461:
prefix from the version string. – Jesse Glick Nov 07 '17 at 19:41yum install MariaDB-server-10.3.5-1
did not work whileyum install MariaDB-server-10.3.5
worked well. – dimir Jun 19 '18 at 11:21yum install
won't work,yum downgrade
should be used instead. – Andrey Regentov Jan 10 '19 at 08:30