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 community
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
$ 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?.