Linux 套件升級
最近更新日期:2001/08/17
前言
升級工具:rpm
升級 rpm


前言
雖然 RedHat 提供好用的東西,但是 Linux 本身是一直在進步的,當然囉,他的套件也就會一直更新啦!什麼是套件呢?例如你要使用 Web server 就應該會知道, RedHat 是使用 Apache 這一套軟體,而這個軟體就稱為一個套件啦!什麼時候需要更新套件呢?通常這是完全視你的需求而定的,如果你覺得你的 Linux 已經夠好了,當然不用升級,但是如果你覺得有更新的套件出來,而這個新的套件內的功能是你所想要的,那就得更新套件啦!

通常要更新套件,最常用的就是直接使用 rpm 這套軟體來直接更新! rpm 使用上是很簡單的!這裡就說說如何以 rpm 更新你的 RedHat 6.1 內的套件吧!

另外,其實在 RedHat 當中,主要都是以 rpm 這套程式再安裝所有的軟體套件的,所以你在安裝一些軟體的時候,最好是選擇 *.i386.rpm 或 *.src.rpm 來進行安裝,這樣對於你往後的升級或者是安裝方面,都會比較簡單喔!



升級工具:rpm
要升級套件,當然就要先知到你的套件的版本啦,如何知道呢?假設你要知道你的 Web Server (就是 Apache 這個軟體)的版本,就需要輸入:
 
[root@tsai /root]# rpm -q apache
apache-1.3.9-4

如上面所寫的, -q 這個參數是察看的意思,則可以發現你的 apache 軟體為 1.3.9-4 版!

安裝全新的套件

而假如你要安裝的軟體並不在你的 Linux 機器上,例如你並沒有安裝 apache ,則使用 -q 參數會出現如下畫面:
 
[root@tsai /root]# rpm -q apache
package apache is not installed

好的很,那你就必須用下面的方法來安裝你的軟體了!
 
[root@tsai /root]# rpm -ivh apache-1.3.9-4.i386.rpm
[root@tsai /root]# rpm --recompile apache-1.3.9-4.src.rpm
[root@tsai /root]# rpm --rebuild apache-1.3.9-4.src.rpm

注意到上面有兩種安裝的方法喔!這是由於 rpm 有兩種模式,一種是已經經過編碼的(i386.rpm)一種是未經編碼的(src.rpm)(通常這種 src.rpm 附檔名的檔案被稱作 SRPM 喔!),這兩種 rpm 的安裝並不相同!另外,以可以用 --rebuild 先製作屬於你的 Linux 的 rpm 後,再進行安裝的工作,而以 --rebuild 編碼後的 i386.rpm 檔案將會被放置在 /usr/src/redhat/RPMS/i386 這個目錄中,例如上面的例子中, apache-1.3.9-4.i386.rpm 將會被製作而放置在 /usr/src/redhat/RPMS/i386 這個目錄中,你只要再以 ivh 或 Uvh 去安裝即可。

升級你的套件

那如果你只是要升級你的套件呢?該如何升級?很簡單,第一步驟就是先從網路上下載新的套件 rpm 檔,你可以在各大 FTP 站上面捉到,或者也可以從底下的 FTP 站直接捉:

RPM:
ftp://linux.sinica.edu.tw/pub1/redhat/updates/6.2/en/os/i386/
ftp://linux.cis.nctu.edu.tw/LINK/distributions/redhat/redhat/linux/7.1/en/os/i386/RedHat/RPMS/
SRPM:
ftp://linux.cis.nctu.edu.tw/LINK/distributions/redhat/redhat/linux/7.1/en/os/i386/SRPMS/
在上面的 FTP 站中,你可以看到最新的 apache 版本為:apache-1.3.19-5.i386.rpm,應該是比你的版本還要新!如果想要更新的話,就捉下來吧!然後以下列的方法來進行升級的動作:
 
[root@tsai /root]# rpm -Uvh apache-1.3.19-5.i386.rpm

參數 -Uvh 就是升級安裝的意思啦!不過,我想你應該會遭遇到像是這樣的困擾:
 
[root@tsai /root]# rpm -Uvh apache-1.3.19-5.i386.rpm
error: failed dependencies:
        libc.so.6(GLIBC_2.1.3)   is needed by apache-1.3.19-5
        libc.so.6(GLIBC_2.2)   is needed by apache-1.3.19-5

為何會有 error 呢?這是因為每一種套件都可能會有相依的套件存在,在上面的例子中,如果你要安裝 apache-1.3.19-5.i386.rpm 的話,就必須要其他的兩個檔案!所以你就得再去找這兩個檔案的相關套件啦!如果你一定要安裝這個套件,又不想提供其他的相依套件的話,你可以這樣做:
 
[root@tsai /root]# rpm -Uvh --nodeps apache-1.3.19-5.i386.rpm

加上 --nodeps 這個參數,他會強制安裝這個套件!不過會不會有問題?這個就不清楚了!所以最好的方法除了下載相關的 i386.rpm 之外,其實,你可以直接下載所謂的 SRPM 檔案(src.rpm),在你的機器上面先編譯過,然後再安裝!這樣的安裝會比較好喔!例如你先捉下來 apache-1.3.19-5.src.rpm 然後在執行編譯的過程:
 
[root@tsai /root]# rpm --rebuild apache-1.3.19-5.src.rpm

然後螢幕會告訴你還需要 openssl 這個咚咚,同樣的,我們再將這個檔案捉下來,然後先後執行:
 
[root@tsai /root]# rpm --rebuild openssl-0.9.6-3.src.rpm
會有很多的咚咚跑出來!最後的 rpm 檔案會放在 /usr/src/redhat/RPMS/i386 中
[root@tsai /root]# cd /usr/src/redhat/RPMS/i386
[root@tsai /root]# rpm -ivh openssl-0.9.6-3.src.rpm
[root@tsai /root]# rpm --rebuild apache-1.3.19-5.src.rpm

順利的話,將會把 apache 的 rpm 檔案編譯出來,如果一直有問題的話,可能就要使用 tar.gz 的檔案從頭手動的升級了,這會比較麻煩一點!

解除安裝

那如果安裝完的 rpm 套件要移除呢?如和移除?其實就更簡單了,假設你要移除 apache ,則直接下達:
 
[root@tsai /root]# rpm -e apache

系統就會自動的移除你的軟體了!



升級 rpm
但其實使用 rpm 最大的問題是,舊版的 rpm 程式沒有辦法替較新版的 .rpm 檔案升級或安裝,這時你就必須要升級你的 rpm 程式了!通常,如果你發現在你要安裝 rpm 的時候,會出現下面的訊息,就表示你需要升級你的 rpm 程式:
 
only packages with major numbers <= 3 are supported by this version of RPM
error: imap-2000-9.i386.rpm cannot be installed

上面的情況是說,你的 rpm 版本是 3.xx 版,而 imap-2000-9.i386.rpm 需要大於 3.xx 版以上的 rpm 程式才能安裝,所以就發生了錯誤訊息了!你可以察看一下你的 rpm 版本:
 
[root@tsai RPM]# rpm -q rpm
rpm-3.0.3-2

如果你是以這個網頁提供的 Linux 作為安裝系統,則應該會出現 rpm 版本為 3.0.3-2 的信息!我們要將之升級到比較新的4.0.2版時,你可以到底下來下載:

ftp://linux.sinica.edu.tw/pub1/redhat/updates/6.2/en/os/i386/
不過這裡必須先說明,由於 rpm 升級時需要其他的套件幫忙,所以你不能只下載 rpm 相關的檔案而已,基本上你應該下載這八個檔案: 你可以直接點選上面八個檔案,由我們這裡直接下載!那要如何安裝呢?如前所說的,由於我們並沒有安裝 db3 這個套件,而 popt 則是需要升級的,所以你可以依照下面的順序來加以升級!
 
[root@tsai RPM]# rpm -ivh db3-3.1.17-4.6x.i386.rpm
[root@tsai RPM]# rpm -ivh db3-devel-3.1.17-4.6x.i386.rpm
[root@tsai RPM]# rpm -ivh db3-utils-3.1.17-4.6x.i386.rpm
[root@tsai RPM]# rpm -Uvh popt-1.6.2-6x.i386.rpm
[root@tsai RPM]# rpm -Uvh rpm-4.0.2-6x.i386.rpm
[root@tsai RPM]# rpm -Uvh rpm-build-4.0.2-6x.i386.rpm
[root@tsai RPM]# rpm -Uvh rpm-devel-4.0.2-6x.i386.rpm
[root@tsai RPM]# rpm -Uvh rpm-python-4.0.2-6x.i386.rpm

好了!如此一來你就已經升級好了 rpm 啦!又可以去安裝其他的軟體囉!

2002/ 01/01以來統計人數