2008年10月31日

手動修補RedHat Enterprise系統套件方式

注意:升級套件前請先做好備份

若你使用Redhat enterprise,又很不幸的無法使用RedHat Network update 套件
那只好自己手動修補。當然一開始你要知道哪些套件是有問題的,要查看系統有
哪些需要修補的套件,請查閱 RedHat Errata

連到RedHat Errata後你可以看到像下圖的網頁(截圖日期為2008/10/31),點選
你要修補的系統版本。




RedHat把修正分為三個類別,分別是Security(安全性),Bug Fix(bug修正)及
Enhancement(功能增強),如下圖,我通常只會做Security及Bug Fix的修正,
功能增強若沒有需要我不會去安裝,套件太多會裝到死。



我以修補cups這個套件為例,點選cups後你可以看到這個修正的詳細資料。
我會以『Advisory』的編號做為修補記錄,這樣你才知道你修正了哪些套件
。接下來點選『Affected Products』,看你的系統是哪一個版本就點他吧。




點選系統版本後,可以看到修正套件的版本名稱,請將這個套件名稱記下來
你會用到這個名稱來下載SRPM套件。

註:底下的RPM檔無法透過FTP下載到,必須要購買RedHat的服務才能用
RedHat Network或yum更新,RedHat只提供SRPM。




接下來要下載cups的SRPM修補檔,你可以在RedHat的FTP站台下載的到
站台位置:ftp://ftp.redhat.com (匿名站台)
套件路徑:/pub/redhat/linux/updates/enterprise/OS版本/en/os/SRPMS/套件名稱

你可以在系統用wget取得(建議)或使用ftp指令下載
Shell> wget ftp://ftp.redhat.com/pub/redhat/linux/updates/enterprise/3AS/en/os/SRPMS/cups-1.1.17-13.3.54.src.rpm

安裝SRPM
Shell> rpm -i cups-1.1.17-13.3.54.src.rpm
Shell> cd /usr/src/redhat/SPECS
Shell> ls
cups.spec

編譯SRPM成RPM套件
Shell> rpmbuild -bb cups.spec
待編譯完成後,看一下有哪些RPM可以用
Shell>cd /usr/src/redhat/RPMS/i386
Shell>ls
cups-1.1.17-13.3.54.i386.rpm
cups-debuginfo-1.1.17-13.3.54.i386.rpm
cups-devel-1.1.17-13.3.54.i386.rpm
cups-libs-1.1.17-13.3.54.i386.rpm

安裝前先看一下系統安裝了哪些關於cups的套件
Shell>rpm -qa | grep cups
cups-1.1.17-13.3.6.i386.rpm
cups-libs-1.1.17-13.3.6.i386.rpm

系統只安裝了這兩個cups套件,所以只要升級這兩個RPM即可,不過在安裝前先測試一下
Shell>rpm -Uvh cups-1.1.17-13.3.54.i386.rpm cups-libs-1.1.17-13.3.54.i386.rpm --test
Preparing... ################################# [100%]

沒有問題就直接升級
Shell>rpm -Uvh cups-1.1.17-13.3.54.i386.rpm cups-libs-1.1.17-13.3.54.i386.rpm
Preparing... #################################[100%]
1.cups #################################### [50%]
2.cups-libs ################################# [100%]

如此就完成升級套件的動作。

註1:升級後記得重新啟動服務或主機(如升級核心就要重新啟動才會生效,升級PHP請重啟WEB Service。

註2:若升級核心在編譯SRPM時遇到錯誤訊息為『error: Architecture is not included: i386』時請看這篇文解決。

註3:若編譯SRPM時遇到許多相依問題無法解決時,改用Tarball的方式會來的更快,像openssh這個套件就是一個例子。

沒有留言:

張貼留言