CentOS 5.0 のままアップデートを続ける場合
/etc/yum.repos.d/CentOS-Base.repo
からの抜粋です。
[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 priority=1
CentOS 5.x の場合,$releasever
は(5.0 ではなく)5 になります。ですから,mirrorlist の取得先は
のようになり,
http://ftp.iij.ad.jp/pub/linux/centos/5.1/updates/i386/ http://ftp.nara.wide.ad.jp/pub/Linux/centos/5.1/updates/i386/ http://ftp.riken.jp/Linux/centos/5.1/updates/i386/ ftp://ftp.oss.eznetsols.org/linux/centos/5.1/updates/i386/ http://centos.ustc.edu.cn/centos/5.1/updates/i386/ http://mirror.tini4u.net/centos/5.1/updates/i386/ http://mirror.mirr4u.com/centos/5.1/updates/i386/ http://ftp.daum.net/centos/5.1/updates/i386/ http://mirror.secuidc.com/centos/5.1/updates/i386/ http://ftp.tcc.edu.tw/Linux/CentOS/5.1/updates/i386/
のように 5.1 の updates レポジトリを参照するようになっています。
この $releasever
がどこから取得されているか,ですが,
It derives the $releasever value from the version number of the package configured as "distroverpkg" (actually, whatever "provides" that in RPM parlance) in /etc/yum.conf, and $basearch from a call to the operating system's uname(2) function.
Re: Yum $releasever $basearch
/etc/yum.conf
の distroverpkg
で指定されたファイルを提供するパッケージになります((ちなみに $basearch
と $arch
は uname(2)
の結果より取得されますが,python package の rpmUtils.arch.getBaseArch()
, rpmUtils.arch.getCanonArch()
で取得しています。)) ((このへんの値の取得コードは /usr/lib/python2.4/site-packages/yum/config.py
の _getsysver()
にあります。))。
実際にたしかめてみましょう。
% cat /etc/yum.conf [main] ...... snip ...... distroverpkg=redhat-release
redhat-release
というファイル((実際には /etc/redhat-release
というファイルを示していると考えられます))を提供する RPM パッケージを調べてみます。
% rpm -q --whatprovides redhat-release centos-release-5-0.0.el5.centos.2
このパッケージのバージョン番号部分は「5」です。本当に?
% rpm -q --whatprovides redhat-release --qf "%{VERSION}\n" 5
本当でした。
ということで,このまま yum update すると 5.1 の updates レポジトリを見に行ってしまうので 5.1 にアップグレードされてしまいます。5.1 にするにはちょっと不安が……という方は 5.0 のままアップデートしていきたいところでしょう*1。
そうするには以下の2案が考えられます
centos-release-5.0-0.0.el5.centos.2
というパッケージを作ることで$releasever
が5.0
になるようにする/etc/yum.repos.d/*
の$releasever
を手で5.0
に置換する
案1だと面倒だし,サードパーティのレポジトリ参照先がおかしくなるかもしれません。ですので案2のほうがいいと思います。
sed を使うなり perl のワンライナーで書くなり vi で編集するなり,お好きなように。
% sudo vi /etc/yum.repos.d/CentOS-Base.repo :%s/\$releasever/5.0/g :wq
これで,各レポジトリの参照先は 5.0 のものとなりますので安心して yum update できます。
Upstream vendor a.k.a. RedHat は 5.0 ツリーのメンテナンスもしばらく続けるとのことですが(ほんとかな),CentOS がどのようなポリシーで追随するのかはわかんないです。後述しますが,一部パッケージはバージョンがあがってたりするので悩みどころですね。昨日も Samba でちょっとはまりましたし。ま,個人的には 5.1 でいこうとおもいます。