這裡提供 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 Stuff、Tecmint