获取 .rpm 的 URL 列表以在封闭网络环境中更新软件包

获取 .rpm 的 URL 列表以在封闭网络环境中更新软件包

背景

我正在封闭的网络环境中运行带有 RHEL 8 的服务器。我可以将文件上传到服务器,但无法yum update在服务器上使用。我想将特定包更新到最新版本。要更新包,我必须从更新的包中更新所需的包。

问题

.rpm如果你能枚举出更新包所需的所有文件的URL ,我就可以.rpm从其他环境下载文件并上传到服务器。

我知道您可以用来repoquery检索依赖关系树以及树中包的 URL,但是除了封闭网络中的环境之外,没有 RHEL 环境。

问题

有没有办法.rpm在没有 RHEL 环境的情况下枚举更新特定软件包所需的所有文件的 URL?

答案1

一种可能的方法是使用:

rpm -qR package_name.rpm

例如:

rpm -qR https://vault.centos.org/centos/8/BaseOS/x86_64/os/Packages/vim-minimal-8.0.1763-16.el8.x86_64.rpm
warning: https://vault.centos.org/centos/8/BaseOS/x86_64/os/Packages/vim-minimal-8.0.1763-16.el8.x86_64.rpm: Header V3 RSA/SHA256 Signature, key ID 8483c65d: NOKEY
config(vim-minimal) = 2:8.0.1763-16.el8
libacl.so.1()(64bit)
libacl.so.1(ACL_1.0)(64bit)
libc.so.6()(64bit)
libc.so.6(GLIBC_2.11)(64bit)
libc.so.6(GLIBC_2.14)(64bit)
libc.so.6(GLIBC_2.15)(64bit)
libc.so.6(GLIBC_2.2.5)(64bit)
libc.so.6(GLIBC_2.28)(64bit)
libc.so.6(GLIBC_2.3)(64bit)
libc.so.6(GLIBC_2.3.4)(64bit)
libc.so.6(GLIBC_2.4)(64bit)
libselinux.so.1()(64bit)
libtinfo.so.6()(64bit)
rpmlib(CompressedFileNames) <= 3.0.4-1
rpmlib(FileDigests) <= 4.6.0-1
rpmlib(PayloadFilesHavePrefix) <= 4.0-1
rpmlib(PayloadIsXz) <= 5.2-1
rtld(GNU_HASH)

获取包后,您需要自行构建 URL

答案2

这个答案非常有效:https://unix.stackexchange.com/a/636320

dnf update --download-only只需将 RPM 复制到目标 PC 并运行即可,而不是安装软件包rpm -Uvh *rpm

如果您在两台设备上保持包同步,则可以无限期地执行此操作。

相关内容