我在一个单独的服务器上为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 回答
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/