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/

之后,我执行了以下命令来创建我的 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 存储库与该服务器通信,并且可以从中安装软件包。

问题是我在运行 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]:

似乎我在进行 reposync 时丢失了安全元数据。

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

4

1 回答 1

1

Etan 的想法是正确的;这是我们发现解决 RHEL6 问题的两种方法。您可以直接从 yum 缓存中提取 Redhat 元数据并将其复制到您的本地存储库中,这在 90% 的时间都有效……但是如果 Redhat 在您更新存储库时碰巧更新存储库,则 10% 的情况下会出现随机故障正在同步它。

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

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

  1. 使用--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/
  2. 从 Redhat拉取abcdefghij-updateinfo.xml.gz元数据文件,其中包含每个存储库的安全元数据。通过运行yum list-sec执行此操作,然后在每个存储库的子目录下的本地 yum 缓存中查找它。可能在/var/cache/yum/ arch /7Server/ repo-id 的某个地方。
  3. 仅在该存储库上运行 createrepo。createrepo -v /path/to/repo-id/
  4. 进入/path/to/repo-id/然后进入repodata子文件夹。将abcdefghij-updateinfo.xml.gz从本地 yum 缓存复制到 repodata 文件夹,但重命名它以删除开头的哈希。留下一个名为updateinfo.xml.gz的文件
  5. 使用 modifyrepo 命令将安全元数据插入到该存储库的目录 (repomd.xml) 文件中。 modifyrepo /path/to/repo-id/updateinfo.xml.gz /path/to/repo-id/
于 2015-08-18T21:02:40.577 回答