Centos

在 RHEL/CentOS 8 上下載 RPM 和所有依賴項

  • June 11, 2021

我有一個場景,我需要在沒有網路連接的伺服器上安裝任意 RPM 包列表(通常大約 5-10 個包)。一些軟體包來自 EPEL,我想避免同步所有 repos,因為我需要經常這樣做。

我通過執行以下操作為 RHEL/CentOS 7 解決了這個問題:

$ yum -y install epel-release createrepo
$ repotrack $PACKAGE_NAME
$ createrepo --database .

然後,我只需使用 USB 驅動器將此文件夾移動到伺服器上,並在其中創建一個儲存庫文件/etc/yum.repos.d,允許我使用yum --disablerepo="*" --enablerepo="my-custom-repo" install $PACKAGE_NAME.

現在我將其移至 RHEL/CentOS 8,雖然它適用於我的一半軟體包,但當我dnf install在隔離伺服器上執行另一半時,我收到以下錯誤:

模組化包“podman-1.6.4-2.module_el8.1.0+272+3e64ee36.x86_64”沒有可用的模組化元數據,無法在系統上安裝

我認為這是由於新的模組化系統和我的回購沒有所有必要的資訊。我試圖閱讀兩者的手冊,repotrackcreaterepo似乎都沒有提到模組。在網際網路上搜尋只是給了我 7 的解決方案,我已經有了,但我沒有找到任何 8 和特別屬於模組的包的東西。

那麼如何將屬於模組的 RHEL/CentOS 8 包及其所有依賴項提取到磁碟上,然後我可以將它們移動到另一台伺服器並在那里安裝它們?

謝謝!

看看modulemd-tools項目。您可以在 EPEL中找到預編譯的二進製文件。

假設您有幾個模組化 rpm ./my-custom-repo/Packages

模組化 rpm 名稱,例如 python36-3.6.8-2。module_el8 .1.0+245+c39af44f.x86_64.rpm

跑:

cd my-custom-repo
# create traditional rpm repo
createrepo_c .
# generate modules meta info
repo2module  -s stable -d . modules.yaml
# adjust modules meta info to traditional rpm repo
modifyrepo_c --mdtype=modules modules.yaml repodata/

完成所有這些工作後,您可以在 repodata 目錄中找到類似 xxxx-modules.yaml.gz 的文件名。

回購現在應該可以工作了。

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