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.
Unix & Linux Stack Exchange is a question and answer site for users of Linux, FreeBSD and other Un*x-like operating systems. It only takes a minute to sign up.
Sign up to join this communityTo 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?.
@updates
and the initial version for the OS located @fedora
. For example if you try to install httpd-2.4.8-1
, yum
would say package not available.
Aug 23, 2014 at 8:51
python-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 say No 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.
Aug 24, 2014 at 4:13
yum 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. docs.fedoraproject.org/en-US/Fedora/14/html/…
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.