那些明白他們聖經的人,不應對世界的現狀感到意外。
Those who know their Bible should not be surprised at the state of the world as it is.
D.M. Lloyd-Jones

yum 是用來管理 rpm 套件的工具,可以自動處理相依性的問題,在 Linux 系統上時常被使用,以下是 yum 指令的基本用法與範例。

列出套件

list 可列出「已安裝」與「未安裝」的套件列表:

# yum list

若要列出 可以安裝(但未安裝)的套件列表,可使用:

# yum list available

若要列出 「已安裝」的套件列表,可用:

# yum list installed

若要列出 「可更新」的套件列表,可用:

# yum list updates

有些套件雖然被安裝在系統中,但是沒有被收錄在套件庫內(例如手動安裝的 RPM 套件),若要列出這種套件可使用:

# yum list extras

列出「最近安裝」的套件列表:

# yum list recent

 

搜尋套件

要搜尋套件,可使用 search,例如搜尋有 httpd 字眼的套件:

# yum search httpd

要找尋有包含特定檔案的套件,可使用 provides,例如搜尋有包含 /etc/sysconfig/nfs 這個檔案的套件列表,則可使用:

# yum provides /etc/sysconfig/nfs

 

安裝套件

安裝 rpm 套件可用 install 指令,並指定要安裝的套件名稱,例如安裝 Apache 網頁伺服器:

# sudo yum install httpd

也可一次安裝多個套件:

# sudo yum install pkg1 pkg2 pkg3

 

指定套件版本

如果要指定安裝套件版本,首先可以使用  --showduplicates  列出可用的版本:

# yum --showduplicates list httpd
Loaded plugins: fastestmirror, langpacks
Determining fastest mirrors
 * base: ftp.tc.edu.tw
 * epel: free.nchc.org.tw
 * extras: ftp.tc.edu.tw
 * updates: ftp.tc.edu.tw
ce_stable                                                                   5/5
Installed Packages
httpd.x86_64                   2.4.6-40.el7.centos.4                    @updates
Available Packages
httpd.x86_64                   2.4.6-40.el7.centos                      base    
httpd.x86_64                   2.4.6-40.el7.centos.1                    updates 
httpd.x86_64                   2.4.6-40.el7.centos.4                    updates

套件版本資訊可「直接加在套件名稱」後面:

# sudo yum install PKGNAME-VERSION

例如:

# sudo yum install httpd-2.4.6-40.el7.centos

 

更新套件

若需更新系統的 RPM 套件,可用  update  指令。並指定套件名稱,例如更新 httpd 套件:

# sudo yum update httpd

若不指定套件名稱,則會更新系統上 「所有已安裝」的套件:

# sudo yum update

若要更新套件至指定的版本,可以改用 update-to

另外一個升級指令是 upgrade,其作用跟 update 類似,不過 upgrade 會連同淘汰的套件也一起更新

# sudo yum upgrade

通常在更新 Linux 發行板時,適合使用 upgrade 來升級套件。

 

檢查可更新的套件

check-update  可列出系統上所有可更新的 RPM 套件列表,這指令不是互動式的,可在指令稿中使用:

# yum check-update

 

移除套件

若要移除套件可使用 remove 指令,並加上要移除的套件名稱:

# sudo yum remove httpd

erase 的作用與 remove 相同:

# sudo yum erase httpd

 

移除沒有用的套件

由於套件的相依性問題,有些套件在某些狀況下會被自動安裝,而當系統經過了一段時間、做了一些變動之後,可能會留下一些沒有用的套件,這時候可以用   autoremove  自動移除這些套件:

# sudo yum autoremove

 

套件資訊

deplist 可以列出指定套件的相依性套件列表:

# yum deplist httpd

 

套件群組

在 yum 的套件系統上,相關的套件會被歸納在同一個群組中,除了以單一套件的方式搜尋與安裝之外,也可以用群組的方式一次安裝所有相關的套件,這樣的好處是可以把相類關的工具一次安裝好,比較不容易遺漏。

grouplist 可以列出所有可用的群組:

# yum grouplist
Loaded plugins: fastestmirror, langpacks
There is no installed groups file.
Maybe run: yum groups mark convert (see man yum)
Loading mirror speeds from cached hostfile
 * base: ftp.tc.edu.tw
 * epel: free.nchc.org.tw
 * extras: ftp.tc.edu.tw
 * updates: ftp.tc.edu.tw
Available Environment Groups:
   最小型安裝
   基礎架構伺服器
   運算節點
   檔案和列印伺服器
   MATE 桌面
   基本網站伺服器
   虛擬主機
   含有 GUI 的伺服器
   GNOME 桌面環境
   KDE Plasma Workspaces
[略]
Available Groups:
   CIFS 檔案伺服器
   Eclipse
   FCoE 儲存體客戶端
   Fedora 軟體打包員
   Haskell
   Legacy UNIX 相容性
   Milkymist
[略]

系統上有很多種套件群組,若要安裝套件群組可以使用 groupinstall

sudo yum groupinstall 'MATE 桌面'

若要更新套件群組,可以使用 groupupdate:

sudo yum groupupdate 'MATE 桌面'

若要移除套件群組,可以使用 groupremove:

sudo yum groupremove 'MATE 桌面'

 

套件庫

repolist 可以列出目前啟用的套件庫:

# yum repolist

若要列出所有可用的套件庫,則執行:

# yum repolist all

如果要從未啟用的套件庫安裝套件,可以加上  --enablerepo  參數:

# sudo yum --enablerepo=epel-testing install vim-X11.x86_64

 

清理暫存檔

clean 指令可以用來清理快取用的暫存檔,若要清理暫存的 RPM 標頭檔則執行:

# yum clean headers

若要清理暫存的 RPM 套件檔則執行:

# yum clean packages

若要清理所有的暫存檔則執行:

# yum clean all