YUM (Yellowdog Updater, Modified) 解決 RPM 套件相依性地獄的利器。本文示範以 RHEL 5 ISO 建立本地 YUM 倉庫,實現離線環境下的套件安裝、更新、移除與群組管理。
# 掛載 ISO
mkdir -p /mnt/iso
mount -o loop /opt/rhel5.0.iso /mnt/iso
# 安裝 YUM 相關 RPM (從 ISO 中)
rpm -ivh /mnt/iso/Server/yum-3.0.1-5.el5.noarch.rpm
rpm -ivh /mnt/iso/Server/yum-metadata-parser-1.0-8.fc6.i386.rpm
rpm -ivh /mnt/iso/Server/yum-rhn-plugin-0.4.3-1.el5.noarch.rpm
rpm -ivh /mnt/iso/Server/yum-updatesd-3.0.1-5.el5.noarch.rpm
rpm -ivh /mnt/iso/Server/createrepo-0.4.4-2.fc6.noarch.rpm
# 複製 ISO 內容至本地目錄 (ISO 唯讀,須複製才能產生中繼資料)
mkdir /opt/rhel5.0
cp -R /mnt/iso/* /opt/rhel5.0
# 重新產生 repodata 中繼資料
cd /opt/rhel5.0/Server/
rm -rf repodata
createrepo -g /mnt/iso/Server/repodata/comps-rhel5-server-core.xml .
關鍵點: -g 參數指定群組定義檔,否則 yum grouplist 將無輸出。
編輯 /etc/yum.repos.d/rhel_local.repo (建議刪除該目錄下其他 .repo 檔):
[Server]
name=Local RHEL 5 Server
baseurl=file:///opt/rhel5.0/Server/
enabled=1
gpgcheck=0
# 清除快取
yum clean all
# 查看可用套件群組
yum grouplist
# 安裝 Web Server 群組
yum groupinstall "Web Server"
# 查看群組詳細資訊
yum groupinfo "Web Server"
# 移除群組
yum groupremove "MySQL Database"
# 升級群組
yum groupupdate "MySQL Database"
# 單一套件操作
yum install httpd
yum update httpd
yum remove httpd
A: createrepo 需寫入中繼資料,掛載的 ISO 為唯讀檔案系統。
media://... 錯誤無法下載 RPM?A: baseurl 指向錯誤路徑 (指向掛載點而非本地複製目錄),且未執行 createrepo -g 重建中繼資料。
yum grouplist 無任何輸出?A: 未執行 createrepo -g 或群組定義檔路徑錯誤 (需指向 comps-rhel5-server-core.xml)。
/opt/yum-repo/
├── rhel5/
│ ├── i386/
│ └── x86_64/
├── rhel6/
│ ├── i386/
│ └── x86_64/
└── epel/
各目錄下獨立執行 createrepo,並在 .repo 檔中對應多個 baseurl。