Yum
使用 createrepo 時,我可以將 rpm 放在多個目錄中嗎?
當我使用該
createrepo
命令時,我可以將 RPM(在基本目錄中)放置在多個目錄中(考慮分層)並且仍然讓 yum 遞歸查看基本目錄中的所有 RPM 目錄嗎?例子:
createrepo /srv/my/repo /srv/my/repo/vendor1/package1/first.rpm /srv/my/repo/vendor1/package2/first.rpm /srv/my/repo/vendor2/package1/third.rpm
我問是因為我將其中一個 RPM 放在一個目錄中,做了一個
createrepo --update
,yum clean all
但它仍然沒有撿起它。現在我想知道它是否需要採用平面文件結構而不是分層結構?
根據我的經驗,不,
createrepo
不能遞歸地遍歷目錄樹。因此,您必須扁平化您的 repo 的目錄結構。我通常在我的 repo 建構腳本中使用這種類型的循環結構。destdir="/path/to/my/yum-repos/Fedora/14" for arch in i386 x86_64 noarch; do printf "\n\n==== creating repo: %-50s [%-s]\n" $destdir $arch pushd ${destdir}/${arch} >/dev/null 2>&1 createrepo -dp . popd >/dev/null 2>&1 done
該執行緒以及我自己的軼事證據表明 yum createrepo 將遍歷子目錄並且您不需要展平。
http://lists.baseurl.org/pipermail/yum/2013-December/024061.html
根據我剛剛執行的測試,這似乎是正在發生的事情。我創建了一個新目錄 /usr/local/repob/pkgs/b/,並將所有以字母“b”開頭的 fedora 19 rpm 文件複製到其中。然後我從更高的目錄結構執行“createrepo”:
createrepo /usr/local/repob
它似乎可以通過遞歸搜尋整個目錄結構來創建一個新的本地 yum 儲存庫。我通過為新的 repo 創建一個快速的 /etc/yum.repos.d/ .conf 文件並使用“repoquery”列出它的包來驗證這一點,它們都在那裡。
因此,預設情況下,createrepo 似乎遞歸掃描“/path/to/rpms/”目錄,但手冊頁中的任何地方似乎都沒有提到這一點,我認為這是一個有用的資訊。