2014-10-06 135 views
4

我試圖在我的系統上創建一個當地的yum repo,其中包含主要來自CentOS基本庫的各種軟件包。託管yum repo的服務器不一定會使用默認安裝的相同基礎軟件包作爲將使用yum repo的服務器。出於這個原因,我需要確保我的回購包含我想要的軟件包以及它們的每個依賴項。下載使用yum的軟件包的所有依賴關係的RPM

我使用yum-utils包中提供的yumdownloader工具創建我的回購站,嘗試從標準CentOS鏡像中使用yum下載RPM文件。它提供了一個命令行選項--resolve,它也下載依賴關係。但是,因爲它是建立在yum本身上的,所以yumdownloader只會下載該系統中尚未存在的包的依賴關係。

例如,我想下載包A,如果包d已經安裝在系統上依賴於軟件包B,C和D,yumdownloader --resolve A將只下載A,B和C,但不D.

有沒有辦法從yum repo下載軟件包上所有依賴項的RPM?

+2

複製http://serverfault.com/questions/470964/yumdownloader-vs-repotrack既包含我要在這裏寫下的答案。 – 2014-10-06 12:59:40

回答

0

有這個bash腳本,rpm的維護者已經和我分享了,我也是put on github。希望你覺得它有用!

您也可以閱讀原文SO question,其中討論了問題。

該腳本適用於Fedora 23+,因爲它使用了dnf的下載插件。在Fedora 22上工作可能非常容易,因爲yum肯定有類似的插件。

另外,它是有價值的,因爲repotrack不適用於fedora 23(至少它不適用於我)。

0

經過很多挫折尋找解決方案後,我寫了一個簡單的腳本,使用repotrace和wget。我發現yumdownloader(即使有解析標誌)也不能解決所有的依賴關係。

如果你有一長串軟件包,你必須重複運行,首先用「repotrack -u標誌」下載url,然後獲得唯一記錄解決了必須多次下載相同的rpm。

#!/bin/bash 

while read i; do 
    repotrack -u $i >> dep_rpm_urls_02.txt 
done < list_of_packages_01.txt 


awk '!seen[$0]++' dep_rpm_urls_02.txt > dep_rpm_urls_clean_03.txt 

while read j; do 
    wget $j 
    echo dowloaded $j 
done < dep_rpm_urls_clean_03.txt 

快樂rpming

相關問題