所以想利用今天開始的過年假期, 把這幾台機器升級到別的版本上頭.
我們選擇的是使用 CentOS 3, 因為這是一套與 RHEL 3 相容的版本, 而 RHEL 3 是基於 RedHat 9 發展的. 這樣子我們升級的異動會比較少一點.
升級主要參考 http://www.owlriver.com/tips/centos-31-ex-rhl-9/ 這一篇文章.
- step 1:
到 http://linux.duke.edu/projects/yum/download.ptml 抓 yum 2.0.7 回來安裝.
- step 2:
把 CentOS 3.3 的光碟中的 RPMS 目錄複製到主機中. 如/centos/os/RPMS 下頭. 共有三片光碟.
- step 3:
如果可能, 也把 CentOS 網站上頭的 updates 下頭的 rpm 也抓一份回來, 放到 /centos/updates/RPMS 下頭.
- step 4:
建立兩個目錄 /centos/os/headers 與 /centos/updates/headers, 然後在 /centos/os 與 /centos/updates 下頭執行這個指令:
cd /centos/os
yum-arch .
cd /centos/updates
yum-arch .
以便於建立 yum 的資料庫.
- step 5:
匯入 CentOS 的 PGP Key.
rpm --import http://mirror.caosity.org/centos-3/RPM-GPG-KEY-CentOS-3
上頭那個檔案在光碟內也有, 也可以直接匯入光碟內的 key.
- step 6:
使用 rpm -e 指令, 移除非必要的 -devel 套件. (非必要)
- step 7:
建立 /etc/yum-upgrade.conf 如下:
[main]
cachedir=/var/cache/yum
debuglevel=2
logfile=/var/log/yum.log
pkgpolicy=newest
distroverpkg=redhat-release
installonlypkgs=kernel kernel-smp kernel-hugemem kernel-enterprise kernel-debug
tolerant=1
exactarch=1
[upgrade]
name=Centos upgrade
baseurl=file://localhost/centos/os/
[update]
name=CentOS-$releasever - Updates
baseurl=file://localhost/centos/updates/
如果沒有事先抓下這些 rpm, 也可以設成:
[main]
cachedir=/var/cache/yum
debuglevel=2
logfile=/var/log/yum.log
pkgpolicy=newest
distroverpkg=redhat-release
installonlypkgs=kernel kernel-smp kernel-hugemem kernel-enterprise kernel-debug
tolerant=1
exactarch=1
[upgrade]
name=Centos upgrade
baseurl=http://mirror.centos.org/centos/3.3/os/$basearch/
[update]
name=CentOS-$releasever - Updates
baseurl=http://mirror.centos.org/centos/3.3/updates/$basearch/
這樣子 yum 會在更新時上網抓檔案. 因為我們要更新好幾台, 所以先抓回來, 以免每次更新都再抓一次. update 的部份也可以不設, 等升級到 CentOS 3.3 後, 再使用 yum update 去更新也可以.
- step 8:
先更新 kernel 與 rpm.
rpm -vv --rebuilddb
yum -y -t -c /etc/yum-upgrade.conf upgrade rpm kernel
rpm -vv --rebuilddb
yum -y -t -c /etc/yum-upgrade.conf upgrade rpm kernel
原本的文件說這兒要重開機, 不過似乎不用, 可以直接往下做.
- step 9:
再更新整個系統:
yum -y -t -c /etc/yum-upgrade.conf upgrade
等 yum 跑完後, 你的 RedHat 9 就變成 CentOS 3.3 了, 再重開機使用新的 kernel.
如果檔案都抓回來, 在 local 的主機或網路上頭時, 整個更新的動作應該可以在 30 分到 1 小時之內完成. 我們的主機上頭有 mysql, postgresql, httpd, php, openldap-server, 整個更新完成後, 系統運作都很正常.
rpm -vv --rebuilddb
yum -y -t -c /etc/yum-upgrade.conf upgrade rpm kernel
rpm -vv --rebuilddb
yum -y -t -c /etc/yum-upgrade.conf upgrade rpm kernel
指令參考 rh9 -> cent 3.1 那篇文章.
重複兩次是為了確定這兩個軟體有升級成功吧.