解决RHEL/CentOS 7/8填充事务时出错,重试

时间:2020-01-09 10:38:17  来源:igfitidea点击:

尝试使用自定义存储库安装RHEL/CentOS 7/8吗?
现在,该存储库可以来自自定义的ISO或者目录。
如果安装所需的存储库中缺少必要的rpm软件包,我们会看到此错误,错误填充事务,在安装RHEL/CentOS 7/8时重试。
Error populating transaction, retrying

当我尝试创建具有一组自定义rpm的自定义RHEL/CentOS 7/8 ISO时,我首先遇到此错误,因此我认为我应该将解决方案放其中以帮助其他面临相同错误的人。

现在,我在使用kickstart和RHEL/CentOS 7安装自定义存储库的环境中模拟了此错误。

我们可以在安装程序上启用串行控制台,以收集控制台日志以进行进一步调试。

或者,我们也可以在安装期间启用SSH,以便可以使用SSH连接到客户端以检查进度,而不是连接到GUI控制台。

说明:

建议我们在安装过程中配置网络启用SSH,因为这样可以更轻松地解决这些问题

如何修复 “Error populating transaction, retrying ”

配置存储后,我们将看到"正在启动软件包安装过程",接下来软件包安装失败,而anaconda将重试错误输出;当由于存储库中缺少rpm依赖关系而导致RHEL/CentOS安装失败时,我们将在控制台上看到该错误输出。

Starting package installation process
 Error populating transaction, retrying (1/10)
<Output trimmed> 
 Error populating transaction, retrying (10/10)
================================================================================
================================================================================
Error
The following error occurred while installing.  This is a fatal error and
installation will be aborted.
 Error populating transaction after 10 retries: failure: NetworkManager-config
server-1.8.0-11.el7_4.noarch.rpm from updates: [Errno 256] No more mirrors to
try.

从安装分析anaconda日志

以我的错误输出为例,我们可以确定问题出在与NetworkManager-configrpm相关的地方。
但是在其他复杂的环境中,我们可能无法在控制台上获得全部详细信息,因此可以检查anaconda日志。

  • 连接到受影响服务器的控制台

  • 默认情况下,安装会在第一个终端上进行,因此我们必须连接到任何其他终端才能获得shell提示。
    Alt + F2连接到第二个终端

  • 或者,我们可以使用串行控制台配置VSP,然后可以使用任何SSH客户端连接到服务器

  • 安装日志位于/tmp内部,而rpm安装相关的日志位于/tmp/packaging.log

  • 在此日志文件中,我们应该看到如下输出:

来自/tmp/packaging.log

09:54:27,428 DEBUG packaging: Error populating transaction, retrying (1/10)
09:54:27,428 DEBUG packaging: Member: libXext.x86_64 0:1.3.3-3.el7 - u
09:54:27,429 DEBUG packaging: Adding Package libXext-1.3.3-3.el7.x86_64 in mode u
09:54:27,429 DEBUG packaging: Member: perl-HTTP-Tiny.noarch 0:0.033-3.el7 - u
09:54:27,430 DEBUG packaging: Adding Package perl-HTTP-Tiny-0.033-3.el7.noarch in mode u
09:54:27,430 DEBUG packaging: Member: NetworkManager-config-server.noarch 1:1.8.0-11.el7_4 - u
10:02:58,676 ERR packaging:  Error populating transaction after 10 retries: failure: NetworkManager-config-server-1.8.0-11.el7_4.noarch.rpm from updates: [Errno 256] No more mirrors to try.
10:02:58,677 DEBUG packaging: file:///run/install/repo/updates/NetworkManager-config-server-1.8.0-11.el7_4.noarch.rpm: [Errno 14] curl#37 - "Couldn't open file /run/install/repo/updates/NetworkManager-config-server-1.8.0-11.el7_4.noarch.rpm"
10:02:58,677 DEBUG packaging: QUIT:

现在我们其中看到问题很直接了,即我们的存储库中没有NetworkManager-config-server-1.8.0-11.el7_4.noarch.rpm

如何解决这个问题?

要解决此问题,请将缺少的rpm添加到存储库,然后重新执行createrepo以更新yum数据库。

由于我们知道所有与安装相关的日志都存储在/tmp下,因此可以通过检查安装失败的服务器上的目录内容,获取安装期间使用的存储库列表。

# ls -l /tmp/yum.repos.d/
total 16
-rw-r--r--. 1 root root 93 Nov 21 09:11 ExtraPackages.repo
-rw-r--r--. 1 root root 69 Nov 21 09:11 anaconda.repo
-rw-r--r--. 1 root root 75 Nov 21 09:11 updates.repo

这里的" anaconda.repo"是默认的仓库,而" updates.repo"和" ExtraPackages.repo"是我使用kickstart文件创建的添加仓库。
从在" packaging.log"中看到的错误无法打开文件/run/install/repo/updates/NetworkManager-config-server-1.8.0-11.el7_4.noarch.rpm,我们知道缺少的rpm是来自" updates" `Repo

将rpm放入更新存储库路径后,通过执行以下命令来更新yum数据库

# createrepo /your/repo/path/.

这将在/your/repo/path /中更新/创建repodata目录。

现在,我们可以重新尝试安装。