這裡提供 Linux 的 yum 指令基礎教學,並提供豐富的 rpm 套件管理範例。

yum 是用來管理 rpm 套件的工具,可以自動處理相依性的問題,在 Red Hat 系列的 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

參考資料:The Geek StuffTecmint