CentOS 7.4 基礎設定 (7) - 簡述 YUM 套件管理工具


前言

最近工作關係開始玩 CentOS 了,本次實作環境中採用的是 CentOS 7.4 (1709) Kernel 3.10.0-693.el7.x86_64) 映像檔,也就是新版 CentOS 7.4 最小化安裝版本 (Minimal Install),那麼開始來玩玩吧。💪



實作環境




YUM 套件管理工具

絕大部份的開放原始碼軟體皆採用 Tarball 的形式進行發布,而在 Linux 上為了解決使用 Tarball 必須要解壓縮、檢測 (./configure)、編譯 (make)、安裝 (make install) 等繁鎖步驟,因此發展出 RPM (The RPM Package Manager) 來簡化整個安裝流程。雖然 RPM 安裝機制簡化了整個安裝流程但卻無法解決套件相依性及套件相衝突的問題,舉例來說您可能安裝 A RPM 時系統顯示您必須要先安裝 B RPM(套件相依性),而當您下載及安裝 B RPM 時又說需要安裝 C RPM(套件相依性),當您好不容易又下載及安裝 C RPM 時卻出現此 RPM 跟 A RPM 互相衝突,碰到這種情況時在以往您只能手動排除這種套件衝突的狀況了。

YUM (Yellow dog Updater Modified) 套件管理工具便是解決上述 RPM 套件相依性及相衝突的問題而發展出來的套件管理解決方案。此套件管理工具能從指定的套件伺服器上自動下載相對應的 RPM 套件包至系統進行安裝,並且當出現套件相依性時能自動下載及安裝相關聯的 RPM 套件,同時會盡量避免發生套件衝突的情況。YUM 能夠有效簡化軟體套件安裝流程並解決惱人的套件相依性及相衝突的問題,使得軟體套件在安裝、移除、升級程序上變得非常容易。

預設 YUM 下載套件的來源伺服器為國外網站,我們可以透過修改 YUM 設定檔 「/etc/yum.repos.d/CentOS-Base.repo」 將下載套件的鏡像網站指定至台灣境內各所大學或機構。目前台灣可以使用的鏡像網站約有 10 個(如下所示),請您依個人網路狀況選擇較適合您的網路環境進行設定以便加快套件下載速度,或者參考 CentOS 鏡像網站清單選擇位於您國家內的鏡像網站:

  • 樹德科技大學: http://ftp.stu.edu.tw/Linux/CentOS/
  • 元智大學: http://ftp.yzu.edu.tw/Linux/CentOS/
  • 義守大學: http://ftp.isu.edu.tw/pub/Linux/CentOS/
  • 崑山科大: http://ftp.ksu.edu.tw/pub/CentOS/
  • 國家高速網路與計算中心: http://ftp.twaren.net/Linux/CentOS/
  • 臺中市政府教育局: http://ftp.tc.edu.tw/Linux/CentOS/
  • 靜宜大學: http://ftp.cs.pu.edu.tw/Linux/CentOS/
  • 中山大學: http://ftp.nsysu.edu.tw/CentOS/
  • Hinet IDC: http://mirror01.idc.hinet.net/CentOS/
  • 交通大學: http://centos.cs.nctu.edu.tw/


下列操作步驟中,我們將 YUM 設定檔內鏡像網站由預設國外站台修改為國內的 Hinet IDC
# cd /etc/yum.repos.d/
# cp CentOS-Base.repo CentOS-Base.repo.bak
# sed -i 's,mirror.centos.org/centos,mirror01.idc.hinet.net/CentOS,g' CentOS-Base.repo


上述設定完成後您便可以開始使用 YUM 配合相關指令管理套件,但是在開始以前建議確認 CentOS 主機時間是否正確,以免後續管理相關套件時,因為本機系統時間與 YUM 鏡像網站時間差異過大造成不可預期的錯誤。下列條列出使用 YUM 套件管理工具時,常常會使用到的指令及相關參數意義:

  • yum check-update: 套件更新檢查,將目前系統上安裝的套件與 YUM 鏡像網站進行檢查比對後列出需要更新套件的清單。
  • yum update: 套件更新,檢查及比對系統需要套件更新的清單後詢問您是否要更新套件,您可以配合參數 –y 對所有詢問一律回答 yes 來允許所有套件更新。
  • yum install <套件名稱>: 安裝套件,執行從 YUM 鏡像網站下載指定套件並進行安裝,收集相關資訊後會詢問您是否確定要安裝,您可以配合參數 –y 對所有詢問一律回答 yes 來安裝指定套件及其相依性套件。
  • yum remove <套件名稱>: 移除套件,移除您指定的套件名稱,收集相關資訊後會詢問您是否確定要移除該套件,您可以配合參數 –y 對所有詢問一律回答 yes 來移除指定的套件及相依性套件。
  • yum clean all: 清除暫存資料,清除使用 YUM 套件管理工具下載 RPM 進行安裝時的暫存檔案。
  • yum search <套件名稱或關鍵字>: 搜尋套件,您可使用已經知道的套件名稱或者有關於套件的關鍵字來進行搜尋的動作。
  • yum list: 顯示可安裝套件清單,顯示您指定的 YUM 鏡像網站中所支援安裝的所有套件名稱。
  • yum info <套件名稱>: 套件資訊,顯示您指定的套件其詳細資訊,例如適用平台、套件版本、套件大小、套件功能描述、套件授權資訊、套件官方網址等資訊。
  • yum grouplist: 顯示可安裝的套件群組清單,顯示您指定的 YUM 鏡像網站中所支援安裝的所有套件群組名稱。
  • yum groupinstall <套件群組名稱>: 安裝套件群組,執行從 YUM 鏡像網站下載指定套件群組中相關套件並進行安裝,收集套件群組相關資訊後會詢問您是否確定要安裝,您可以配合參數 –y對所有詢問一律回答 yes 來安裝指定套件及其相依性套件。
  • yum groupremove <套件群組名稱>: 移除套件群組,移除您指定的套件群組,並且在系統收集相關資訊後,會詢問是否確定要移除該套件群組中所有套件,您可以配合參數 –y 對所有詢問一律回答 yes 來移除指定的套件群組。
  • yum groupinfo <套件群組名稱>: 查詢套件群組資訊,查詢指定的套件群組資訊及功能描述,並且將顯示此套件群組中預設會安裝的套件清單 (Default Packages)、強制安裝的套件清單 (Mandatory Packages)、選擇安裝的套件清單 (Optional Packages)。
  • yum provides <指令名稱>: 查詢指令的來源套件,查詢系統中某個指令是由哪個套件所提供。

舉例來說,在 CentOS 7 版本中預設情況下並不會有 ifconfig 及 netstat 指令,此時便可以使用「yum provides ifconfig netstat」指令來查詢,這 2 個指令可以透過安裝「net-tools」套件獲得。
# yum provides ifconfig netstat
Loaded plugins: fastestmirror
Loading mirror speeds from cached hostfile
 * base: ftp.tc.edu.tw
 * elrepo: ftp.yz.yamagata-u.ac.jp
 * epel: mirror.premi.st
 * extras: ftp.tc.edu.tw
 * updates: ftp.tc.edu.tw
net-tools-2.0-0.22.20131004git.el7.x86_64 : Basic networking tools
Repo        : base
Matched from:
Filename    : /sbin/ifconfig

net-tools-2.0-0.22.20131004git.el7.x86_64 : Basic networking tools
Repo        : base
Matched from:
Filename    : /bin/netstat



由於 YUM 套件管理工具實際上也是幫助我們對 RPM 套件包進行管理的工作,其實底層的安裝、移除、升級等動作仍是使用 RPM 套件,因此我們仍可以使用 rpm 指令來幫助我們了解及管理套件,例如,使用 rpm 指令來了解已安裝的 Firewalld 套件、設定檔及服務啟動檔在哪裡。
# rpm -qa firewalld   //查詢套件版本
firewalld-0.4.4.4-6.el7.noarch
# rpm -qc firewalld   //列出套件設定檔
/etc/dbus-1/system.d/FirewallD.conf
/etc/firewalld/firewalld.conf
/etc/firewalld/lockdown-whitelist.xml
/etc/sysconfig/firewalld
# rpm -ql firewalld   //列出套件所有檔案
/etc/dbus-1/system.d/FirewallD.conf
/etc/firewalld
/etc/firewalld/firewalld.conf
/etc/firewalld/icmptypes
/etc/firewalld/lockdown-whitelist.xml
/etc/firewalld/services
/etc/firewalld/zones
/etc/sysconfig/firewalld
/usr/bin/firewall-cmd
...略...

圖、使用 rpm 指令查詢套件資訊



CentOS 7.4 基礎設定系列文章: