作者:杜克石
想當年,我們懷著興奮和激動的心情,安裝了 RedHat6.2,隨著時間的推移和開發人員的努力,內核中的錯誤和不足被逐漸發現並修正,為了系統的性能和穩定,需要升級內核了。可是我們有許多程序只能運行於2.2.x 內核之下,看來升級到 RedHat 7.2是沒有希望了,唯一的辦法就是下載新的合適的內核包來升級。看內核升級文檔,英文的,不太懂,好不容易搞明白,才發現需要下載的包如此之多,終於下載完了,安裝的時候又出問題,由於包的依賴性等問題,這個裝不上,那個裝不上。最後,內核升級失敗。
我們使用的應用程序,也有不少性能和安全方面的問題,也需要升級。在下載安裝升級包的時候,會遇到與上面升級內核是同樣的問題,難以克服。
最麻煩的問題是,好不容易克服了重重困難,開始安裝,可某個包告訴你它需要的一個文件(不是一個包,僅僅是個文件)不存在,天啊!誰知道這個文件在哪個包里,總不能把所有的包都下載下來吧,看來升級是沒有指望了,又是失敗。
RHN 升級服務是與 RedHat 7.x 同步推出的,就像微軟的 windowsupdate。它可以自動檢查你的系統有哪些包需要升級,自動計算包的依賴性,從而確定下載什麼包來升級你的系統和應用程序,免除了我們的苦惱。
RHN 只會進行小版本升級,不會把你的系統改的面目全非的。比如:6.2 的內核是 2.2.x,它不會把你的內核升級到 2.3.x 或者 2.4.x的。同樣的道理,你的 bind 是版本 8 的,它決不會給你升級到版本 9的。這樣可以保證你的系統的穩定運行,不會由於升級,導致你的某些對內核版本有依賴的程序不能正常運行,或者象 bind一樣,需要你重新配置或生成很多你不了解的新版本所特有的配置文件。
另個好處是,Red Hat 會在有你需要的升級包發布的時候(不是所有的升級包發布的時候),把升級的具體原因和內容發到你在 RHN註冊的電子信箱里,你只用收收郵件,就知道有升級消息了,看過之後,可以決定去不去升級你的系統。
從上可以看出,RHN 是管理 Red Hat linux 系統的有效工具。
使用 RHN 前的準備工作:
在安裝 RHN 功能之前,需要升級 rpm 管理包。因為 6.2 使用的版本 3 格式的包,而目前 RedHat 推出的包都是基於版本 4格式的,版本 4 格式的包無法在版本 3 下安裝。
開始升級 rpm,步驟如下:
1、如下所示,下載相應的 rpm 包:(注意: Red Hat 網上提供的升級包清單不全,缺少 db3 包。)
ftp://updates.redhat.com/6.2/en/os/i386/rpm-4.0.2-6x.i386.rpm
ftp://updates.redhat.com/6.2/en/os/i386/rpm-devel-4.0.2-6x.i386.rpm
ftp://updates.redhat.com/6.2/en/os/i386/rpm-build-4.0.2-6x.i386.rpm
ftp://updates.redhat.com/6.2/en/os/i386/rpm-python-4.0.2-6x.i386rpm
ftp://updates.redhat.com/6.2/en/os/i386/popt-1.6.2-6x.i386.rpm
ftp://updates.redhat.com/6.2/en/os/i386/db3-3.1.17-4.6x.i386.rpm
2、安裝 rpm 包,執行如下命令:(注意:是執行兩次相同的命令,而不是寫錯了。)
rpm -Uvh --nodeps --force *
rpm -Uvh --nodeps --force *
3、重建 rpm 資料庫,執行如下命令: rpm --rebuilddb
安裝 RHN 的客戶端工具,步驟如下:
1、如下所示,下載相應的 rpm 包:
ftp://updates.redhat.com/6.2/en/os/i386/up2date-2.7.11-6.x.1.i386.rpm
ftp://updates.redhat.com/6.2/en/os/i386/python-popt-0.6-1.i386.rpm
ftp://updates.redhat.com/6.2/en/os/i386/python-xmlrpc-1.5.1-6.x.7.i386.rpm
ftp://updates.redhat.com/6.2/en/os/i386/python-1.5.2-27.6.x.i386rpm
ftp://updates.redhat.com/6.2/en/os/i386/rhn_register-2.7.2-6.x.8i386.rpm
ftp://updates.redhat.com/6.2/en/os/i386/openssl-0.9.5a-7.6.x.i386.rpm
如果你準備在 Xwindows 下執行 RHN 操作,那麼還需要下載如下的 rpm 包:
ftp://updates.redhat.com/6.2/en/os/i386/up2date-gnome-2.5.4-0.6.x.i386.rpm
ftp://updates.redhat.com/6.2/en/os/i386/up2date-2.7.11-6.x.1.i386.rpm
ftp://updates.redhat.com/6.2/en/os/i386/rhn_register-gnome-2.7.2-6.x.8.i386.rpm
ftp://updates.redhat.com/6.2/en/os/i386/usermode-1.37-1.6.i386.rpm
2、開始安裝包,執行如下命令:
rpm -Uvh *
怎麼使用 RHN:
1、在 RHN 上註冊自己的 linux 計算機,也就是在 RHN 上新建立一個帳號。執行如下命令:
rhn_register
執行后,出來的是圖形界面,簡單易懂。必須輸入的內容有:
想在 RHN 上建立的帳號名及密碼,你的電子郵件地址。
它會把你的機器的硬體、軟體信息和配置信息發給 RHN,留作記錄,用作升級時的參考。
2、導入 Red Hat 的數字簽名,執行如下命令兩次(有時候一次也可以,這是最保險的方法):
/usr/bin/gpg --import /usr/share/rhn/RPM-GPG-KEY
/usr/bin/gpg --import /usr/share/rhn/RPM-GPG-KEY
3、先看看自己的系統有哪些包需要升級,執行以下命令: up2date -l
它首先在 RHN上查找你的系統需要的最新升級包的名稱,然後再除去你已經安裝過的,把你目前需要的升級包的詳細信息顯示出來,主要內容為包的名稱、原始版本、發布版本。詳細內容後面有例子。
4、使用自動升級功能,執行如下命令:
up2date -u
它會根據設定的規則,對你的系統進行自動升級。具體過程就是:自動下載,自動安裝。
如果你改動過應用程序發布時自帶的配置文件,up2date就會告訴你,這個應用程序不能自動升級,需要手動升級。主要是為了保護你的配置,以免被錯誤覆蓋,導致應用程序不能正常運行。 比如:你修改過 sendmail 自帶的 sendmail.cf 文件,up2date 就會告訴你由於 sendmail.cf 被修改過,所以不能升級 sendmail。
默認情況下內核也是不能自動升級的。
5、手動升級非內核包:
主要用於為象上面的 sendmail
這樣的情況。這個操作有一定難度,首先我們要了解舊的配置與新的配置是否相容,也就是新的程序是否可以使用舊的配置文件。這需要到有關的網站去查看或者諮詢高手。
如果相容,我們把舊的配置文件保存好,升級完后,再用舊的配置文件覆蓋新的配置文件即可。實際上 up2date會自動把舊的配置文件保存為 *.rpmsave,或者它不改動舊的配置文件,而是把新的配置文件命名為
*.rpmnew。升級后配置文件如何變化的具體情況,up2date 在升級完成時,會告訴我們的。但為了保險起見,我們還是手工保存一下為妙。
比如剛才的 sendmail 包,我們用舊的配置文件覆蓋新的即可。
如果不相容,而又想升級。最好的辦法就是升級完后,重新配置了。
具體操作命令為:
up2date -f 包名稱
比如:up2date -f sendmail。有的時候包名稱比較長,如 pcmcia-kernel,需要全部輸入,只輸入 pcmcia 是不行的。
6、手動升級內核:
這種情況下,我們需要首先修改配置文件 /etc/sysconfig/rhn/up2date,修改以前最好備份一下 up2date。主要是其中兩項:
removeSkipList=kernel*;
pkgSkipList=kernel*;
把其等號後面的 kernel*; 全部刪除,使其變成:
removeSkipList=
pkgSkipList=
修改完成後,保存,再執行 up2date -u 命令即可。
從上面的介紹可以看出,RHN 的確是管理 Red Hat linux 系統的有效工具。
例子:
執行 up2date -l 后的結果
Retrieving list of all available packages...
########################################
########################################
Removing installed packages from list of updates...
########################################
Removing packages marked to skip from list...
########################################
Getting headers for available packages...
########################################
Removing packages with files marked to skip from list...
########################################
Name Version Rel
---------------------------------------------------------
at 3.1.8 22.2
uucp 1.06.1 33.6.2
它告訴我們,at 和 uucp 需要升級。
如果執行 up2date -u 的話,結果與此類似,多了下載和安裝。