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?.
@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. 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. 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.