Installing a specific package version with yum

I have a Fedora system with Postgres version 8.3 and I want to downgrade to 8.2 because of a compatibility issue. I've been using yum for everything, but it's my first time with this package manager, and I don't know how to downgrade things.

So how do I tell it to give me a specific version of a package?

EDIT: I managed to get this working by following by downloading the specific packages as per skymt's suggestion, plus installing their GPG key. All I had to do was

rpm --import RPM-GPG-KEY-PGDG
yum localinstall postgresql-8.2.10-1PGDG.f9.i386.rpm
yum localinstall .....

And so on. However, this was fairly clunky and I'm still hoping that there's an easier way. If anyone knows of how to get YUM to target a specific version without resorting to this, please let me know so that I'll be able to do this next time.


Solution 1:

In Centos I did following this steps:

On /etc/yum.repos.d/CentOS-Base.repo.

on Base and Update sections add the next lines exclude=postgresql* (then you don't update from normal repository for postgres rpm).

[base]
name=CentOS-$releasever - Base
mirrorlist=http://mirrorlist.centos.org/?release=$releasever&arch=$basearch&repo=os
#baseurl=http://mirror.centos.org/centos/$releasever/os/$basearch/
gpgcheck=1
gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-CentOS-5
exclude=postgresql*

#released updates
[updates]
name=CentOS-$releasever - Updates
mirrorlist=http://mirrorlist.centos.org/?release=$releasever&arch=$basearch&repo=updates
#baseurl=http://mirror.centos.org/centos/$releasever/updates/$basearch/
gpgcheck=1
gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-CentOS-5
exclude=postgresql*

Then download the version that you want. See http://yum.pgrpms.org/howtoyum.php

wget http://yum.pgrpms.org/reporpms/8.3/pgdg-centos-8.3-6.noarch.rpm
rpm -ivh pgdg-centos-8.3-6.noarch.rpm

Now you have another repo in your /etc/yum.repos.d/ pgdg-82-centos.repo.

ls /etc/yum.repos.d/
CentOS-Base.repo  CentOS-Media.repo  pgdg-82-centos.repo

then if you install postgres, centos will take from yum.pgsqlrpms.org/

yum install postgresql postgresql-server

Solution 2:

From the manpage:

MISC

  Specifying package names

         A package can be referred to for install,update,list,remove  etc
         with any of the following:

          name
          name.arch
          name-ver
          name-ver-rel
          name-ver-rel.arch
          name-epoch:ver-rel.arch
          epoch:name-ver-rel.arch

          For example: yum remove kernel-2.4.1-10.i686

You may have to manually remove the newer version and then install the older.

Solution 3:

Use the upgrade option and specify the version number:

yum upgrade postgresql-8.2.10

Check the dependencies list before hitting Y. You might need to add other packages to the upgrade list.