文章目錄
使用 yum 下載包含相依套件的完整 package
production 環境上的所有 server 因為資安問題沒有開放主動對外連線,連帶著 package 的安裝就沒辦法透過公用 yum repository 的方式來進行,所以興起自建 yum repository 的念頭
在實際建立 yum repository 之前需要先蒐集用到的 yum package,而現在許多套件都有其他套件的相依,單純只下載需要的套件本身是無法順利使用的,今天就來紀錄一下該如何下載完整的套件
基本環境說明
- Azure VM Standard B2s (2 vcpu,4 GiB 記憶體)
Azure Linux image
- cognosys/centos-7-9-free
yum packages
- jq-1.6
使用方式
透過
deplist
可以列出套件相依如果不想逐一搜尋所有 yum repository , 可以加上
--enablerepo
指定 repo語法
yum deplist {package name} [--enablerepo={repo name}]
範例
yum deplist jq --enablerepo=epel
完整下載指定套件與其相依套件
語法
--downloadonly
: 用來下載 package 而不安裝--installroot
: 需要指定一個空資料夾強迫 yum 認定所有相依皆不存在,否則只會下載系統不存在的相依套件--downloaddir
: 指定下載回來的套件存放路徑--releasever
: 指定 linux 版本,不加這個參數會出現存取$releasever
但找不到的 404 的錯誤http://olcentgbl.trafficmanager.net/centos/%24releasever/os/x86_64/repodata/repomd.xml: [Errno 14] HTTP Error 404 - Not Found Trying other mirror. To address this issue please refer to the below wiki article https://wiki.centos.org/yum-errors If above article doesn't help to resolve this issue please use https://bugs.centos.org/. http://olcentgbl.trafficmanager.net/centos/%24releasever/extras/x86_64/repodata/repomd.xml: [Errno 14] HTTP Error 404 - Not Found Trying other mirror. http://olcentgbl.trafficmanager.net/centos/%24releasever/updates/x86_64/repodata/repomd.xml: [Errno 14] HTTP Error 404 - Not Found Trying other mirror. http://olcentgbl.trafficmanager.net/openlogic/%24releasever/openlogic/x86_64/repodata/repomd.xml: [Errno 14] HTTP Error 404 - Not Found
yum install --downloadonly --installroot={empty foleder path} --releasever=$(rpm --eval '%{centos_ver}') --downloaddir={rpm 儲放路徑} {package name}
範例
yum install --downloadonly --installroot=/tmp/jqrepo --releasever=$(rpm --eval '%{centos_ver}') --downloaddir=$(pwd) jq
實際下載效果
心得
雖然最後的語法算是單純,但過程比想像中複雜:參數比較預期的多 眉眉角角也不少
在取得完整相依套件後,其實透過逐一安裝相依但件的方式最後就可以成功安裝目標套件,但這樣的方式不是很聰明也很沒效率,我還是比較偏好使用 yum repo 來統一管理
最後就是將下載回來的套件統統 import 進自建 yum repository 中就可以使用了
如果想自建 yum repository 可以參考 使用 Nexus 來建立 yum repository
參考資訊
文章作者 Yowko Tsai
上次更新 2022-02-24
授權合約
本部落格 (Yowko's Notes) 所有的文章內容(包含圖片),任何轉載行為,必須通知並獲本部落格作者 (Yowko Tsai) 的同意始得轉載,且轉載皆須註明出處與作者。
Yowko's Notes 由 Yowko Tsai 製作,以創用CC 姓名標示-非商業性-相同方式分享 3.0 台灣 授權條款 釋出。