背景
我正在封闭的网络环境中运行带有 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
。
如果您在两台设备上保持包同步,则可以无限期地执行此操作。