Yum

使用 createrepo 時,我可以將 rpm 放在多個目錄中嗎?

  • April 9, 2020

當我使用該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 --updateyum 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/”目錄,但手冊頁中的任何地方似乎都沒有提到這一點,我認為這是一個有用的資訊。

引用自:https://unix.stackexchange.com/questions/158740