在我的 CentOS 7 服务器上,当我运行yum --security upgrade
它时没有找到任何安全更新 rpm 包,但我知道 vim-minimal 安全更新包可用。
如何使 yum 安全更新在我的 CentOS 7 服务器上运行?
# yum --security upgrade |tail
--> hwdata-0.252-8.8.el7.x86_64 from @cr removed (updateinfo)
--> cronie-1.4.11-19.el7.x86_64 from @cr removed (updateinfo)
--> sssd-client-1.16.0-19.el7.x86_64 from @cr removed (updateinfo)
--> glib2-2.54.2-2.el7.x86_64 from @cr removed (updateinfo)
--> GeoIP-1.5.0-11.el7.x86_64 from @anaconda removed (updateinfo)
--> 1:grub2-pc-modules-2.02-0.76.el7.centos.1.noarch from updates removed (updateinfo)
--> 1:grub2-pc-modules-2.02-0.65.el7.centos.2.noarch from @updates removed (updateinfo)
--> e2fsprogs-1.42.9-11.el7.x86_64 from @cr removed (updateinfo)
No packages needed for security; 254 packages available
Resolving Dependencies
vim 包列表
# yum list vim-minimal --showduplicates
Loaded plugins: fastestmirror
Loading mirror speeds from cached hostfile
Installed Packages
vim-minimal.x86_64 2:7.4.160-4.el7
Available Packages
vim-minimal.x86_64 2:7.4.160-5.el7
vim-minimal.x86_64 2:7.4.160-6.el7_6
谢谢
答案1
最初的问题是“如何让我的 CentOS 7 yum 为我提供安全更新列表”。这里的关键是 CentOS 7。
--security 标志需要 yum-plugin-security 包和一些元数据才能生成比较,为您提供什么是安全包和什么不是安全包的列表。 RHEL 订阅创建此元数据供 RHEL 从中提取。 CentOS 没有(并且 CentOS 存储库中没有 yum-plugin-security 端口)。
过去的一项建议是只提取 RHEL 元数据并将其用于 CentOS 系统。这是行不通的,因为 RHEL 总是在 CentOS 将补丁纳入其存储库链之前发布补丁。这意味着元数据永远不会完全匹配 CentOS 版本。
由于 CentOS 团队从未(据我所知)希望创建此元数据(我承认这是一项繁重的工作),因此此选项不太可能在 CentOS 系列上运行。
上面转储中的重要线索是每个包上的“已删除(updateinfo)”字符串。
答案2
我看到有两种方法可以做到这一点:
- 您可以尝试禁用除包含所需软件包的存储库之外的所有存储库,从而仅从该存储库进行查询和安装。请参阅、和 的
yum
联机帮助页。repolist
--disablerepo
--enablerepo
- 另一种选择是下载该包及其依赖项的 RPM 并安装它们:
repoquery --requires --resolve --recursive <package_name> | xargs -r yumdownloader
.repoquery
还有启用/禁用存储库的选项,请参阅联机帮助页。此命令将找到vim
您想要的包和所有依赖项,并下载这些 RPM。然后,您可以yum
使用本地安装/更新实用程序或 RPM 来安装它们。
另外,请注意联机帮助页中yum
有关该--security
标志的内容:
此选项包括声称可以在更新中修复安全问题的软件包。
这些版本可能vim-minimal
没有安全更新。