RHEL5でyum-prioritiesを使う

RHEL5yum-prioritiesを使おうとした場合にはすんなりいきません。今回はたぶんうまく動かすことができたので報告します。ただし、きっちりとテストしたわけではないので実際に利用する際は自己責任でお願いします。

yum-prioritiesのインストール

まず、RHEL5の標準yumレポジトリにはyum-prioritiesは入っていません。どこかから持ってくる必要があります。
幸いにもCentOS5.3の標準レポジトリには入っている*1のでこいつを使うことにします。

[root@db01 ~]# rpm -ihv http://mirror.centos.org/centos-5/5.3/os/i386/CentOS/yum-priorities-1.1.16-13.el5.centos.noarch.rpm

priority設定

次に/etc/yum.repos.d/にある*.repoファイルに書かれたレポジトリ設定にそれぞれpriorityを書こうとするわけですが、ここで問題があります。実はRHELの標準レポジトリはyum-rhnpluginというプラグインを使ってRHNをラップした仮想yumレポジトリのようなものなのでここに設定ファイルがありません
調べてみると/etc/yum/pluginconf.d/rhnplugin.confにそれらしき記述がありましたのでここにpriorityを追加してみます。

[main]
enabled = 1
gpgcheck = 1

[rhel-i386-server-5]
enabled = 1
priority = 1

動いているか確かめる

とりあえず、今回は被っているパッケージがあるyumレポジトリとしてPostgreSQL RPMsからpgdg-redhat-8.4-1.noarchをインストールしてpriority = 20を設定しました。
この状態でyum info postgresqlを実行してみます。*2

[admin@db01 ~]$ sudo yum info postgresql
Password: 
Loaded plugins: priorities, rhnplugin, security
65 packages excluded due to repository priority protections
Available Packages
Name       : postgresql
Arch       : i386
Version    : 8.1.18
Release    : 2.el5_4.1
Size       : 2.8 M
Repo       : rhel-i386-server-5
Summary    : PostgreSQL client programs and libraries.
License    : BSD
Description: PostgreSQL is an advanced Object-Relational database management system
           : (DBMS) that supports almost all SQL constructs (including
           : transactions, subselects and user-defined types and functions). The
           : postgresql package includes the client programs and libraries that
           : you'll need to access a PostgreSQL DBMS server.  These PostgreSQL
           : client programs are programs that directly manipulate the internal
           : structure of PostgreSQL databases on a PostgreSQL server. These client
           : programs can be located on the same machine with the PostgreSQL
           : server, or may be on a remote machine which accesses a PostgreSQL
           : server over a network connection. This package contains the docs
           : in HTML for the whole package, as well as command-line utilities for
           : managing PostgreSQL databases on a PostgreSQL server.
           : 
           : If you want to manipulate a PostgreSQL database on a remote PostgreSQL
           : server, you need this package. You also need to install this package
           : if you're installing the postgresql-server package.

つぎにpgdgのpriorityを1にしてみると下記のように表示されpriority設定が有効に働いていることが分かります。

[admin@db01 ~]$ sudo yum info postgresql
Loaded plugins: priorities, rhnplugin, security
pgdg84                                                                                   | 1.9 kB     00:00     
44 packages excluded due to repository priority protections
Available Packages
Name       : postgresql
Arch       : i386
Version    : 8.4.1
Release    : 1PGDG.rhel5
Size       : 1.3 M
Repo       : pgdg84
Summary    : PostgreSQL client programs and libraries
URL        : http://www.postgresql.org/
License    : BSD
Description: PostgreSQL is an advanced Object-Relational database management system
           : (DBMS) that supports almost all SQL constructs (including
           : transactions, subselects and user-defined types and functions). The
           : postgresql package includes the client programs and libraries that
           : you'll need to access a PostgreSQL DBMS server.  These PostgreSQL
           : client programs are programs that directly manipulate the internal
           : structure of PostgreSQL databases on a PostgreSQL server. These client
           : programs can be located on the same machine with the PostgreSQL
           : server, or may be on a remote machine which accesses a PostgreSQL
           : server over a network connection. This package contains the command-line
           : utilities for managing PostgreSQL databases on a PostgreSQL server.
           : 
           : If you want to manipulate a PostgreSQL database on a local or remote PostgreSQL
           : server, you need this package. You also need to install this package
           : if you're installing the postgresql-server package.

今回は限定的なレポジトリなので実はpriority設定などしなくても問題ないかもしれませんが、DAGレポジトリなど汎用レポジトリを利用したいときは有用になると思います。

*1:理由は分かりませんがCentOS5.4には含まれていないようです

*2:rhnpluginはrootでしか働かないのでsudo必須