2009年2月18日水曜日

CentOS yumの設定

 まだまだネットワーク管理者モードは続くのであった…。うきょー。

はじめに


 自前でソースをダウンロードしてコンパイルして…というのは、時間がいくらあっても足りない。何かセキュリィティホールが発見される度に対処されたソースを取得してコンパイルしなければならないからだ。そのためには、どんなセキュリィティホールが発生したのか絶えず最新の情報を漏れなく追いかけなくてはならない。こんな事、専任のネットワーク管理者がいなければ不可能だ。しかも、ライブラリの依存関係にも気を遣わなければならない。ライブラリが根本から覆ると、それに依存しているものは全てコンパイルし直し…という事態を招くかもしれない。こうして、どんどんと時間を費やすことになるだろう。 ながらネットワーク管理者には、とてもそんな時間は取れないし知識も無いので、できる事ならパッケージを流用する方が賢明というものだ。メンテナーの皆様ありがとう。という事で、なるべくパッケージを流用する方針で行こう。

最初にやる事


 初期の状態で yum update を開始すると、恐ろしく時間がかかります。そこで、yum-fastestmirror の導入は必須でしょう。また、方針により yum-updatesd を外し yum-cron を導入するものとします。yum-cron を利用すると無条件に更新されてしまうため動作していたものが動作しなくなるという危険が伴います。考え方により導入しないで手動でメンテナンスするというのも有りです。手をかけたくない人は yum-corn でしょう(注:centos だから成立するのであって fedora では有り得ない選択肢です)。

$ yum remove yum-udpatesd
$ yum install yum-fastestmirror yum-cron

 もうひとつ、いろんなパッケージを導入すると、依存関係に破綻をきたす事があります。そんな破綻を防いでくれるのが yum-protect-packages です。

$ yum install yum-protect-packages

こいつを導入したら、

$ cd /etc/yum.repos.d
$ ls
$ gedit CentOS-Base.repo&

として

[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=http://mirror.centos.org/centos/RPM-GPG-KEY-CentOS-5
protect=1

[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=http://mirror.centos.org/centos/RPM-GPG-KEY-CentOS-5
protect=1

[addones]
...
protect=0

base, updates セクションに対して protect=1 を追加で設定し、その他のセクションに対しては、protect=0 を追加で設定します。
同様に、他の *.repo ファイルに対しても protect=0 を追加で設定します。
今後、リポジトリを追加した場合には、protect=0 を追加で設定するようにしましょう。

リポジトリを追加


これから2つのリポジトリを追加します。1つは、PostgreSQL で、もうひとつは DAG と呼ばれるものです。

PostgreSQL


CentOS 5.5 から postgresql84 が導入されました。

http://yum.pgsqlrpms.org/reporpms/ から目的のパッケージをダウンロードしてインストールします。


$ wget http://yum.pgsqlrpms.org/reporpms/8.3/pgdg-centos-8.3-5.noarch.rpm
$ rpm -ivh pgdg-centos-8.3-5.noarch.rpm

postgresql はベースのパッケージにも存在するので、リポジトリに対して exclude 指令を加えます。

$ gedit /etc/yum.repos.d/CentOS-Base.repo &

として、以下のように base, updates セクションに exclude を追加します。

[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=http://mirror.centos.org/centos/RPM-GPG-KEY-CentOS-5
exclude=postgresql*
protect=1

[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=http://mirror.centos.org/centos/RPM-GPG-KEY-CentOS-5
exclude=postgresql*
protect=1

DAG


http://packages.sw.be/rpmforge-release/ から目的のパッケージをダウンロードしてインストールします。尚、CentOS <-> RedHat の関係が成立します。

$ wget http://packages.sw.be/rpmforge-release/rpmforge-release-0.5.1-1.el5.rf.i386.rpm
$ rpm -ivh rpmforge-release-0.5.1-1.el5.rf.i386.rpm

とします。同様に protect=0 の設定を追加しますが、既に設定されているかもしれません。

追記:同じようにインストールを行っても、手順の前後で不整合が生じてうまくいかない場合もあります。

pgdg-83-centos.repo に対して



exclude=libevent

rpmforge.repo に対して


exclude=postgresql*
exclude=pgadmin*

を設定しました。

追記2:なんかエラーになる場合は、以下の呪文を唱えると良いらしいです。


yum clean metadata


追記:2010/07/06 修正

0 件のコメント: