軟體的升級是對軟體功能的改進和安全性的升級,與windows系統類似,linux作業系統下也需要對軟體進行定期的更新升級,保持軟體始終處於最新狀態。Linux作業系統的升級可以分為自動升級和手動升級兩種方式:自動升級一般是在有授權的linux發行版或者免費linux發行版下進行的,只要輸入升級命令,系統會自動完成升級工作,無需人工干預。
yum是yellowdog updater modified 的縮寫,yellow dog(黃狗)也是一個 Linux 的 發行版本,只不過Redhat公司是將這種升級技術利用到自己的發行版上就形成了現在的 yum。 yum是進行linux自動升級常用的一個工具,通過yum工具配合網際網路即可實現自動升級系統。例如一臺經過授權的Redhat Linux作業系統,或者一臺Centos Linux系統,只要你的系統能連線網際網路,輸入yum update 即可實現系統的自動升級。通過yum進行系統升級實質是yum命令去下載指定的遠端網際網路 主機上的RPM軟體包,然後自動進行安裝,同時解決各個軟體之間的依賴關係。
手動升級是有針對性的進行某個系統軟體的升級,例如升級系統的ssh登入工具、gcc編譯工具等等。手動升級其實就是通過RPM包工具實現軟體更新的,因此在升級軟體時可能會遇到軟體之間的依賴關係,升級相對比較麻煩。
下面具體講述在Centos Linux4.4下如何設定yum工具,進行系統自動升級。
1.yum的安裝與配置
(1)yum的安裝
檢查yum是否已經安裝:
[root@localhost ~]# rpm -qa|grep yum
如果沒有任何顯示,表示系統中還沒有安裝yum工具,yum安裝包在centos系統光碟中可以找到,執行如下指令進行安裝:
[root@localhost ~]# rpm -ivh yum-*.noarch.rpm
安裝yum需要python-elementtree、python-sqlite、urlgrabber、yumconf等軟體包的支援,這些軟體包在Centos Linux系統安裝光碟均可找到,如果在安裝yum過程中出現軟體包之間的依賴性,只需按照依賴提示尋找相應軟體包安裝即可,直到yum包安裝成功。
下面是某個環境的安裝示例:
[root@localhost ~]# rpm -ivh yum-2.4.3-1.c4.noarch.rpm
warning: yum-2.4.3-1.c4.noarch.rpm: V3 DSA signature: NOKEY, key ID 443e1821
error: Failed dependencies:
        python-elementtree is needed by yum-2.4.3-1.c4.noarch
        python-sqlite is needed by yum-2.4.3-1.c4.noarch
        urlgrabber is needed by yum-2.4.3-1.c4.noarch
        yumconf is needed by yum-2.4.3-1.c4.noarch
[root@localhost ~]# rpm -ivh python-elementtree-1.2.6-4.2.1.i386.rpm
warning: python-elementtree-1.2.6-4.2.1.i386.rpm: V3 DSA signature: NOKEY, key ID 443e1821
Preparing…                ########################################### [100%]
   1:python-elementtree     ########################################### [100%]
root@localhost ~]# rpm -ivh sqlite-3.3.3-1.2.i386.rpm       
warning: sqlite-3.3.3-1.2.i386.rpm: V3 DSA signature: NOKEY, key ID 443e1821
Preparing…                ########################################### [100%]
   1:sqlite                 ########################################### [100%]
[root@localhost ~]# rpm -ivh python-sqlite-1.1.7-1.2.i386.rpm
warning: python-sqlite-1.1.7-1.2.i386.rpm: V3 DSA signature: NOKEY, key ID 443e1821
Preparing…                ########################################### [100%]
   1:python-sqlite          ########################################### [100%]
[root@localhost ~]# rpm -ivh python-urlgrabber-2.9.8-2.noarch.rpm
warning: python-urlgrabber-2.9.8-2.noarch.rpm: V3 DSA signature: NOKEY, key ID 443e1821
Preparing…                ########################################### [100%]
   1:python-urlgrabber      ########################################### [100%]
root@localhost ~]# rpm -ivh centos-yumconf-4-4.5.noarch.rpm
warning: centos-yumconf-4-4.5.noarch.rpm: V3 DSA signature: NOKEY, key ID 443e1821
Preparing…                ########################################### [100%]
   1:centos-yumconf         ########################################### [100%]
[root@localhost ~]# rpm -ivh yum-2.4.3-1.c4.noarch.rpm
warning: yum-2.4.3-1.c4.noarch.rpm: V3 DSA signature: NOKEY, key ID 443e1821
Preparing…                ########################################### [100%]
   1:yum                    ########################################### [100%]
(2)yum的配置
yum工具安裝完畢,接下來的工作是進行yum的配置,yum的配置檔案有主配置檔案/etc/yum.conf、資源庫配置目錄/etc/yum.repos.d,yum安裝後,預設的一些資源庫配置可能無法使用,因此需要進行 修改,下面是/etc/yum.repos.d/CentOS-Base.repo資源庫配置檔案各項的詳細含義:
[root@localhost ~]#/etc/yum.repos.d/CentOS-Base.repo
[base]
name=CentOS-4 – Base
#name 就是發行版的名稱,其格式表示“作業系統名和釋出版本”,“base”是表明此段尋找的是base包資訊。

baseurl=http://mirror.centos.org/centos/4/os/$basearch/ 
#baseurl”表示yum在網際網路上查詢升級檔案的URL地址。其中“$basearch”代表了系統的硬體構架如“i386”、“x86-64等,同時,yum在資源更新時,會檢查baseurl/repodata/repomd.xml檔案。 “repomd.xml”是一個索引檔案,它的作用是提供了更新rpm包檔案的下載資訊和SHA校驗值。 “repomd.xml”包括了3個檔案,分別為“other.xml.gz”、”filelists.xml.gz”和”primary.xml.gz”,表示的含義依次是“其它更新包列表”、“更新檔案集中列表”和“主要更新包列表”。

gpgcheck=1 
#gpgcheck表示是否啟用gpg檢查,1表示啟用,0表示不啟用校驗,如果啟用,就是需要在配置檔案裡註明GPG-RPM-KEY的位置,可以看到下面gpgkey欄位,指定了GPG-RPM-KEY驗證檔案的位置。

#released updates
[update]
#本段是updates更新模組要用到的部分配置。
name=CentOS-4 – Updates
baseurl=http://mirror.centos.org/centos/4/updates/$basearch/
gpgcheck=1
gpgkey=http://mirror.centos.org/centos/RPM-GPG-KEY-centos4
#gpgkey指定GPG金鑰的地址
 
#packages used/produced in the build but not released
#本段指定的是尚未釋出的軟體包部分(addons)配置
[addons]
name=CentOS-4 – Addons
baseurl=http://mirror.centos.org/centos/4/addons/$basearch/
gpgcheck=1
gpgkey=http://mirror.centos.org/centos/RPM-GPG-KEY-centos4

#additional packages that may be useful
#本段指定的是有用的額外軟體包部分(extras)配置
[extras]
name=CentOS-4 – Extras
baseurl=http://mirror.centos.org/centos/4/extras/$basearch/
gpgcheck=1
gpgkey=http://mirror.centos.org/centos/RPM-GPG-KEY-centos4

#additional packages that extend functionality of existing packages
#本段指定的是擴充套件的額外軟體包部分(centosplus)配置
[centosplus]
name=CentOS-4 – Plus
baseurl=http://mirror.centos.org/centos/4/centosplus/$basearch/
gpgcheck=1
enabled=0
gpgkey=http://mirror.centos.org/centos/RPM-GPG-KEY-centos4

#contrib – packages by Centos Users
#這裡是contrib部分
[contrib]
name=CentOS-4 – Contrib
baseurl=http://mirror.centos.org/centos/4/contrib/$basearch/
gpgcheck=1
enabled=0
gpgkey=http://mirror.centos.org/centos/RPM-GPG-KEY-centos4
2.yum的特點
 安裝方便,自動解決增加或刪除rpm包時遇到的依賴 性問題。
 可以同時配置多個資源庫(Repository)
 配置檔案簡單明瞭(/etc/yum.conf、/etc/yum.repos.d/CentOS-Base.repo)
 保持與RPM資料庫的一致性
注意:yum會自動下載所有所需的升級資源包並預設放置在/var/cache/yum目錄下, 當第一次使用yum或yum資源庫更新 時,軟體升級所需的時間可能較長。
3.yum的日常用法
(1)通過yum安裝和刪除RPM包
 安裝rpm包,如dhcp
[root@localhost ~]#yum install dhcp
 刪除rpm包,包括與該包有依賴 性的包
[root@localhost ~]#yum remove licq
注意:同時會提示刪除licq-gnome,licq-qt,licq-text
(2)通過yum工具更新軟體包
 檢查可更新的rpm包:
[root@localhost ~]#yum check-update
 更新所有的rpm包:
[root@localhost ~]#yum update
 更新指定的rpm包,如更新kernel和kernel source:
[root@localhost ~]#yum update kernel kernel-source
 大規模的版本升級, 與yum update不同的是, 陳舊的淘汰的包也會升級:
[root@localhost ~]#yum upgrade
(3)通過yum查詢RPM包資訊
 列出資源庫中所有可以安裝或更新的rpm包的資訊:
[root@localhost ~]#yum info
 列出資源庫中特定的可以安裝或更新以及已經安裝的rpm包的資訊:
[root@localhost ~]#yum info vsftpd
[root@localhost ~]#yum info perl*
注意:可以在rpm包名中使用匹配符, 如上面例子是列出所有以perl開頭的rpm包的資訊。
 列出資源庫中所有可以更新的rpm包的資訊:
[root@localhost ~]#yum info updates
 列出已經安裝的所有的rpm包的資訊:
[root@localhost ~]#yum info installed
 列出已經安裝的但是不包含在資源庫中的rpm包的資訊:
[root@localhost ~]#yum info extras
注:也就是 通過其它網站下載安裝的rpm包的資訊。
 列出資源庫中所有可以更新的rpm包:
[root@localhost ~]#yum list updates
 列出已經安裝的所有rpm包:
[root@localhost ~]#yum list installed
 列出已經安裝的但不包含在資源庫中的rpm包:
[root@localhost ~]#yum list extras
注:也就是通過其它網站下載安裝的rpm包。
 列出資源庫中所有可以安裝或更新的rpm包:
[root@localhost ~]#yum list
 列出資源庫中特定的可以安裝或更新以及已經安裝的rpm包:
[root@localhost ~]#yum list sendmail
[root@localhost ~]#yum list gcc*
注意:可以在rpm包名中使用匹配符, 如上面例子是列出所有以gcc開頭的rpm包。
 搜尋匹配特定字元的rpm包的詳細資訊:
[root@localhost ~]#yum search wget
注意:可以通過“search”在rpm包名, 包描述中進行搜尋。
 搜尋包含特定檔名的rpm包:
[root@localhost ~]#yum provides realplay
(4)通過yum操作暫存資訊(/var/cache/yum)
 清除暫存的rpm包檔案:
[root@localhost ~]#yum clean packages
 清除暫存的rpm標頭檔案:
[root@localhost ~]#yum clean  headers
 清除暫存中舊的rpm標頭檔案:
[root@localhost ~]#yum clean oldheaders
 清除暫存中舊的rpm標頭檔案和包檔案:
[root@localhost ~]#yum clean  或
[root@localhost ~]#yum clean  all
注意: 上面的兩條命令相當於yum clean packages + yum clean oldheaders。
4.Redhat Linux下用yum升級系統
yum也可以升級Redhat Linux系統,在Redhat Linux系統安裝盤中預設沒有yum的安裝包,由於Redhat Linux與Centos Linux基本一致,因此可以用同版本同核心的Centos Linux的yum包在Redhat Linux上進行安裝。安裝過程在上面章節已經講述,這裡不在多說。
由於使用的是Centos Linux的yum包在Redhat Linux下進行的安裝,因此在Redhat Linux下需要增加資源庫,定義yum的非官方庫檔案,讓一些必需的軟體包通過yum也能夠安裝。
首先建立dag.repo,定義非官方庫:
[root@localhost ~]# vi /etc/yum.repos.d/dag.repo
[dag]
name=Dag RPM Repository for RHEL4
baseurl=http://ftp.riken.jp/Linux/dag/redhat/el4/en/$basearch/dag/
enabled=1
gpgcheck=1
接著匯入非官方庫的GPG:
[root@localhost ~]# rpm –import
http://ftp.riken.jp/Linux/caos/centos/RPM-GPG-KEY-centos4
注意:此步驟很重要,如果沒有匯入授權的RPM-GPG-KEY,在使用yum升級安裝軟體時就會提示軟體不合法,結合上下文可以看出,在Centos下進行yum配置的時候,並沒有涉及到匯入RPM-GPG-KEY,那是因為連線的資源庫為Centos官方的庫,而升級的系統也是Centos,當然無需授權,而這裡我們升級的系統是Redhat Linux,而用的資原始檔是Centos的,所以必須匯入Centos的RPM-GPG-KEY,系統才認為升級的包是合法的。
最後,就可以使用非官方定義的rpm包升級系統:
[root@localhost ~]#yum update