首页 文章

Local yum存储库中的安全性插件

提问于
浏览
1

我在一个单独的服务器上为RHEL 7创建了一个本地yum存储库 . 然后我使用“reposync”命令从RHN获取包 .

reposync --download-metadata --gpgcheck -l --repoid=rhui-REGION-rhel-server-rh-common --download_path=/rhel_security_repo/
reposync --download-metadata --gpgcheck -l --repoid=rhui-REGION-rhel-server-optional --download_path=/rhel_security_repo/
reposync --download-metadata --gpgcheck -l --repoid=rhui-REGION-rhel-server-releases --download_path=/rhel_security_repo/

之后,我执行了以下命令来创建我的仓库:

createrepo --database /rhel_security_repo/

已按预期成功创建了超过9000个包的存储库 . 我现在要做的是使用这个本地存储库的其他框 . 我在其他框中创建了一个yum配置文件,其中baseurl使用本地yum存储库指向此服务器 .

[security-updates-rhel7]
name=Repository for RHEL7 security updates
baseurl=ip-server
enabled=1
gpgcheck=1

所有服务器都能够使用本地yum repo与此服务器通信,并且可以从中安装软件包 .

问题是当我运行yum update时,我无法更新软件包--security:

例:

yum --disablerepo="*" --enablerepo="security-updates-rhel7" --security update mariadb-libs
Loaded plugins: amazon-id, rhui-lb
 --> 1:mariadb-libs-5.5.37-1.el7_0.x86_64 from @rhui-REGION-rhel-server-releases removed (updateinfo)
 --> 1:mariadb-libs-5.5.40-2.el7_0.x86_64 from security-updates-rhel7 removed (updateinfo)
No packages needed for security; 1 packages available
Resolving Dependencies

但是,如果我在没有--security的情况下运行命令,我可以看到可用的更新:

yum --disablerepo="*" --enablerepo="security-updates-rhel7" update mariadb-libs
Loaded plugins: amazon-id, rhui-lb
Resolving Dependencies
--> Running transaction check
---> Package mariadb-libs.x86_64 1:5.5.37-1.el7_0 will be updated
---> Package mariadb-libs.x86_64 1:5.5.40-2.el7_0 will be an update
--> Finished Dependency Resolution

Dependencies Resolved

==============================================================================================================================
 Package                    Arch                 Version                           Repository                            Size
==============================================================================================================================
Updating:
 mariadb-libs               x86_64               1:5.5.40-2.el7_0                  security-updates-rhel7               753 k

Transaction Summary
==============================================================================================================================
Upgrade  1 Package

Total download size: 753 k
Is this ok [y/d/N]:

当我进行重新同步时,我似乎丢失了安全元数据 .

任何想法可能是什么问题?

1 回答

  • 1

    Etan有正确的想法;这些是我们通过RHEL6解决问题的两种方式 . 您可以将Redhat元数据直接从yum缓存中提取出来并将其复制到本地存储库中,并且90%的时间可以正常工作...但是如果Redhat恰好在您更新存储库时它会给您随机失败10%同步它 .

    Redhat有关于如何在RHEL5 / 6中将安全元数据移植到本地存储库的指南,我认为它在RHEL7中的工作方式类似 . 如果您有Redhat支持帐户,请参阅:https://access.redhat.com/solutions/55654

    如果你不这样做,下面是我自己的看法:

    • 使用 --download-metadata 和其他修剪运行你的reposync命令,但我会一次从一个repo开始,并将每个repo放在它自己的目录中,类似于Redhat的工作方式 . 恩 . mkdir -p /path/to/repo-id && reposync -l -n --download-metadata -r repo-id -p /path/to/repo-id/ .

    • 从Redhat中提取 abcdefghij-updateinfo.xml.gz 元数据文件,其中包含每个存储库的安全元数据 . 通过运行 yum list-sec 然后在每个存储库的子目录下的本地yum缓存中查找它来执行此操作 . 可能在 /var/cache/yum/arch/7Server/repo-id 的某个地方 .

    • 仅在该存储库上运行createrepo . createrepo -v /path/to/repo-id/

    • 进入 /path/to/repo-id/ ,然后进入 repodata 子文件夹 . 将 abcdefghij-updateinfo.xml.gz 从本地yum缓存复制到repodata文件夹,但重命名它以删除开头的哈希 . 留下一个名为 updateinfo.xml.gz 的文件

    • 使用modifyrepo命令将安全元数据插入到该repo的目录(repomd.xml)文件中 . modifyrepo /path/to/repo-id/updateinfo.xml.gz /path/to/repo-id/

相关问题