本地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。

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

+0

安全的元数据,它的出现,住在仓库元数据文件。通过自己创建你已经失去了上游版本。您可以尝试下拉上游repodata目录并直接使用它(通过创建三个存储库)或合并重新数据(可能使用'modifyrepo.py'或类似的工具)。 –

Etan有正确的想法;这些是我们发现解决RHEL6问题的两种方式。您可以将Redhat元数据直接从yum缓存中取出,并将其复制到您的本地存储库中,并且该方法在90%的时间内运行......但是,如果Redhat恰好在更新存储库时,它会给您带来随机故障正在同步它。

Redhat有关于如何将安全元数据移植到RHEL5/6中的本地回购的指南,我假设它在RHEL7中的工作方式类似。如果你有一个红帽支持帐户,请参阅:https://access.redhat.com/solutions/55654

如果你不这样做,下面是我自己拿就可以了:

  1. - 表格下载的元数据和其他装饰品运行您reposync命令,但我会一次从一个回购开始,并将每个回收站放在它自己的目录中,类似于Redhat所做的。恩。 mkdir -p/path/to/repo-id & & reposync -l -n --download-metadata -r repo-id -p/path/to/repo-id/
  2. 从Redhat中提取abcdefghij-updateinfo.xml.gz元数据文件,其中包含每个存储库的安全元数据。通过运行yum list-sec来执行此操作,然后在每个存储库的子目录下的本地yum缓存中查找它。可能在某处/var/cache/yum/arch/7Server/repo-id
  3. 在该存储库上运行createrepo。createrepo -v /路径/到/回购ID/
  4. 走进/路径/到/回购ID/然后进入repodata子文件夹。将abcdefghij-updateinfo.xml.gz从本地yum缓存复制到repodata文件夹中,但将其重命名为在开始时删除散列。留下一个名为的文件updateinfo.xml.gz
  5. 使用modifyrepo命令将安全性元数据插入到该repo的目录(repomd.xml)文件中。 modifyrepo /path/to/repo-id/updateinfo.xml.gz /路径/到/回购ID/