Tuesday, February 19, 2008

CentOS 線上升級疑難概論

不管是從 Fedora 升到 CentOS, 或是 CentOS 低版升到高版過程中,遇到的問題其實是差不多。

1. centos-release 第一個重要的主角
升級完可以考慮作一次 rpm --rebuild

重建完 rpm db 有助於在做 yum upgrade 時正確檢查相依性

2. glibc 三劍客 glibc , glibc-common, glibc-devel
glibc 是系統最重要的 Library, 如果 glibc 有問題系統將運作不正常,這三個套件最好要同時裝 保證萬無一失。但不管任何時刻,千萬不要移除 glibc ,移除了系統就馬上不能動了。
rpm -Uvh glibc* --nodeps --force

3. 可能的不訴之客 yum 及 rpm
這個兩有時候要先升級有時候又不用,一旦遇到免不了相依一番。

通常是下 yum 時,才發現指令無法執行,只好用 rpm 指令升級 yum 程式。有時候不幸的是 rpm -ivh yum* 也發生問題,可能是因為 rpmdb 毀損或是 rpm 的 lib 版本不對。
rpmdb 毀損用 rpm --rebuild 重建,rpm lib 版本不對 就只好從別台同等級作業系統 copy 過來了

如果要升級 rpm 及 yum 套件 先用 rpm -ivh 檢查相依性,確定所有套件都找齊了,放在同一個目錄才能用 rpm -Uvh * --nodeps 安裝,如果裝不進去,加個 --force 強迫安裝。

記得:若升級 rpm 表示 rpmdb 格式可能會變動喔,一定要做 rpm --rebuild 喔

4. 完整升級
先 vi 一個 /etc/yum-upgrade.conf 用這個設定檔來升級
原來系統的 /etc/yum.repo.d/CentOS-Base.repo 就不要動他
這樣升級完後就不用改回來

下面是 yum-upgrade.conf 請依照本身的狀態去改
[main]
cachedir=/var/cache/yum
debuglevel=2
logfile=/var/log/yum.log
pkgpolicy=newest
distroverpkg=redhat-release
installonlypkgs=kernel kernel-smp
tolerant=1
exactarch=1

[upgrade]
name=Centos upgrade
baseurl=http://mirror.centos.org/centos/4/os/$basearch/
exclude=mysql*

[update]
name=CentOS-$releasever - Updates
baseurl=http://mirror.centos.org/centos/4/updates/$basearch/

執行 yum -c /etc/yum-upgrade.conf upgrade 升級
如果過程遇到無法解決的相依性程式 就先 rpm -e xxx -nodeps

5. 開機前的檢查
請檢查 /etc/grub/grub.conf 指定 kernel 是否存在於 /boot 下
否則開不了機 那就功虧一簣了

6. 清理圾垃
先看看系統有哪些沒升級完成的套件
rpm -qa | grep FC
rpm -qa | grep fc
rpm -qa | grep legacy

然後用 rpm -e xxx 或是 rpm -e --justdb 刪掉
然後再用 rpm -ivh xxx 安裝

另外一個非常非常重要的事

升級只能前進不能後退,一旦決定升級只能去完成他。升級到一半的系統,裡面新舊程式混雜,是非常不穩定隨時都可能有問題的。就算是倒退,倒退程序絕對比繼續完成還要複雜,如果沒有保握,請先虛擬一個環境測試。

No comments:

Post a Comment