Gマイナー志向

とくに意味はありません

yum updateできなくなった古いCentOSでyumコマンドを復活させる方法

例えばRed Hat Enterprise Linux Extended Life Cycle Supportで絶賛延命中なRHEL4サーバのテスト環境構築など、やむ得ぬ事情で古いCentOSを使う必要があったりますよね。ね。

しかしサポートが終了した古いバージョンのCentOSはミラーから取り除かれてしまうため、yum updateを実行しても以下のようなメッセージが表示されてアップデートできません。

# yum update
Setting up Update Process
Setting up repositories
not using ftp, http[s], or file for repos, skipping - 4 is not a valid release or hasnt been released yet
Cannot find a valid baseurl for repo: update
Error: Cannot find a valid baseurl for repo: update

し、しかし私はどうしても古いCentOSが必要なんだ!

じゃあどうすればいいか。実は http://mirror.centos.org/centos/4.9/readme を見ればヒントが書いてあるんですね。

This directory (and version of CentOS) is depreciated.  

CentOS-4 is now past EOL

You can get the last released version of centos 4.9 here:

http://vault.centos.org/4.9/

そう、 http://vault.centos.org/ で古いリポジトリを参照できるんですね。
なので/etc/yum.repos.d/CentOS-Base.rpeoを次のように変更すればok。

--- /etc/yum.repos.d/CentOS-Base.repo.orig
+++ /etc/yum.repos.d/CentOS-Base.repo
@@ -13,8 +13,9 @@

 [base]
 name=CentOS-$releasever - Base
-mirrorlist=http://mirrorlist.centos.org/?release=$releasever&arch=$basearch&repo=os
+#mirrorlist=http://mirrorlist.centos.org/?release=$releasever&arch=$basearch&repo=os
 #baseurl=http://mirror.centos.org/centos/$releasever/os/$basearch/
+baseurl=http://vault.centos.org/4.9/os/$basearch/
 gpgcheck=1
 gpgkey=http://mirror.centos.org/centos/RPM-GPG-KEY-centos4
 priority=1
@@ -23,8 +24,9 @@
 #released updates
 [update]
 name=CentOS-$releasever - Updates
-mirrorlist=http://mirrorlist.centos.org/?release=$releasever&arch=$basearch&repo=updates
+#mirrorlist=http://mirrorlist.centos.org/?release=$releasever&arch=$basearch&repo=updates
 #baseurl=http://mirror.centos.org/centos/$releasever/updates/$basearch/
+baseurl=http://vault.centos.org/4.9/updates/$basearch/
 gpgcheck=1
 gpgkey=http://mirror.centos.org/centos/RPM-GPG-KEY-centos4
 priority=1
@@ -33,8 +35,9 @@
 #packages used/produced in the build but not released
 [addons]
 name=CentOS-$releasever - Addons
-mirrorlist=http://mirrorlist.centos.org/?release=$releasever&arch=$basearch&repo=addons
+#mirrorlist=http://mirrorlist.centos.org/?release=$releasever&arch=$basearch&repo=addons
 #baseurl=http://mirror.centos.org/centos/$releasever/addons/$basearch/
+baseurl=http://vault.centos.org/4.9/addons/$basearch/
 gpgcheck=1
 gpgkey=http://mirror.centos.org/centos/RPM-GPG-KEY-centos4
 priority=1
@@ -43,8 +46,9 @@
 #additional packages that may be useful
 [extras]
 name=CentOS-$releasever - Extras
-mirrorlist=http://mirrorlist.centos.org/?release=$releasever&arch=$basearch&repo=extras
+#mirrorlist=http://mirrorlist.centos.org/?release=$releasever&arch=$basearch&repo=extras
 #baseurl=http://mirror.centos.org/centos/$releasever/extras/$basearch/
+baseurl=http://vault.centos.org/4.9/extras/$basearch/
 gpgcheck=1
 gpgkey=http://mirror.centos.org/centos/RPM-GPG-KEY-centos4
 priority=1
@@ -53,8 +57,9 @@
 #additional packages that extend functionality of existing packages
 [centosplus]
 name=CentOS-$releasever - Plus
-mirrorlist=http://mirrorlist.centos.org/?release=$releasever&arch=$basearch&repo=centosplus
+#mirrorlist=http://mirrorlist.centos.org/?release=$releasever&arch=$basearch&repo=centosplus
 #baseurl=http://mirror.centos.org/centos/$releasever/centosplus/$basearch/
+baseurl=http://vault.centos.org/4.9/centosplus/$basearch/
 gpgcheck=1
 enabled=0
 gpgkey=http://mirror.centos.org/centos/RPM-GPG-KEY-centos4
@@ -64,8 +69,9 @@
 #contrib - packages by Centos Users
 [contrib]
 name=CentOS-$releasever - Contrib
-mirrorlist=http://mirrorlist.centos.org/?release=$releasever&arch=$basearch&repo=contrib
+#mirrorlist=http://mirrorlist.centos.org/?release=$releasever&arch=$basearch&repo=contrib
 #baseurl=http://mirror.centos.org/centos/$releasever/contrib/$basearch/
+baseurl=http://vault.centos.org/4.9/contrib/$basearch/
 gpgcheck=1
 enabled=0
 gpgkey=http://mirror.centos.org/centos/RPM-GPG-KEY-centos4

$releaseverはCentOS4であれば4に展開されるんですが、vault.centos.orgには/4/というディレクトリは存在しないので、4.9と直書きしてます。

そしておもむろにyum update

# yum update
Setting up Update Process
Setting up repositories
update                    100% |=========================|  951 B    00:00     
base                      100% |=========================| 1.1 kB    00:00     
addons                    100% |=========================|  951 B    00:00     
extras                    100% |=========================| 1.1 kB    00:00     
Reading repository metadata in from local files
primary.xml.gz            100% |=========================| 843 kB    00:01     
sqlite cache needs updating, reading in metadata
update    : ################################################## 1920/1920
No Packages marked for Update/Obsoletion

okのようです。

CentOS2やCentOS3は試してませんが、おそらく同じ手順でできると思います。でもアップグレードするのがいいと思いますよ。