本地yum版本库中的安全性插件
问题描述:
我在单独的服务器上为RHEL 7创建了本地yum版本库。然后我使用“reposync”命令从RHN获取软件包。本地yum版本库中的安全性插件
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更新--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]:
似乎我丢失了安全元数据时,我做了reposync。
任何想法可能是什么问题?
答
Etan有正确的想法;这些是我们发现解决RHEL6问题的两种方式。您可以将Redhat元数据直接从yum缓存中取出,并将其复制到您的本地存储库中,并且该方法在90%的时间内运行......但是,如果Redhat恰好在更新存储库时,它会给您带来随机故障正在同步它。
Redhat有关于如何将安全元数据移植到RHEL5/6中的本地回购的指南,我假设它在RHEL7中的工作方式类似。如果你有一个红帽支持帐户,请参阅:https://access.redhat.com/solutions/55654
如果你不这样做,下面是我自己拿就可以了:
- 与- 表格下载的元数据和其他装饰品运行您reposync命令,但我会一次从一个回购开始,并将每个回收站放在它自己的目录中,类似于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 /路径/到/回购ID/
- 走进/路径/到/回购ID/然后进入repodata子文件夹。将abcdefghij-updateinfo.xml.gz从本地yum缓存复制到repodata文件夹中,但将其重命名为在开始时删除散列。留下一个名为的文件updateinfo.xml.gz
- 使用modifyrepo命令将安全性元数据插入到该repo的目录(repomd.xml)文件中。 modifyrepo /path/to/repo-id/updateinfo.xml.gz /路径/到/回购ID/
安全的元数据,它的出现,住在仓库元数据文件。通过自己创建你已经失去了上游版本。您可以尝试下拉上游repodata目录并直接使用它(通过创建三个存储库)或合并重新数据(可能使用'modifyrepo.py'或类似的工具)。 –