使用自定义仓库通过Leapp将RHEL 7.9升级至8.4失败求助
解决RHEL 7.9通过Leapp升级至8.4时preupgrade失败的问题
环境前提
- 已完成RHEL 7.3 → 7.9的自定义仓库升级,全程未使用subscription-manager或Red Hat Satellite
- 执行
leapp preupgrade时触发故障,目标版本为RHEL 8.4
分步排查与修复
1. 验证自定义仓库配置
Leapp依赖正确的7.9和8.4仓库源,先做基础检查:
- 列出当前启用的仓库:
yum repolist enabled,确保只有RHEL 7.9基础仓库和用于升级的8.4自定义仓库处于启用状态 - 检查8.4仓库文件(
/etc/yum.repos.d/下)的baseurl是否可达,enabled=1是否设置正确,若不需要gpg验证可设gpgcheck=0 - 测试仓库可用性:
yum --disablerepo="*" --enablerepo="<your-8.4-repo-name>" list available,确认能正常拉取包信息
2. 检查Leapp工具状态
- 确认Leapp套件已安装:
rpm -qa | grep leapp,如果缺失,直接从7.9自定义仓库安装:yum install leapp leapp-repository - 执行
leapp gather收集环境数据,然后查看/var/log/leapp/leapp-report.txt,排查是否有依赖包缺失或环境配置问题 - 查看
/var/log/leapp/leapp-preupgrade.log中关于仓库的日志,若出现“no valid repositories found”,说明Leapp未识别到自定义8.4仓库,需调整仓库配置
3. 处理Leapp预升级阻断项
Leapp的preupgrade会生成阻断升级的ERROR级条目,必须逐一修复:
- 打开
/var/log/leapp/leapp-report.txt,定位所有ERROR类型的内容:- 若提示“Missing required packages”,直接从7.9仓库安装对应包:
yum install <缺失包名> - 若提示“Obsolete packages installed”,卸载这些废弃包:
yum remove <废弃包名> - 若提示内核版本不兼容,先升级到7.9最新内核:
yum update kernel,重启服务器后再执行preupgrade
- 若提示“Missing required packages”,直接从7.9仓库安装对应包:
4. 跳过RHSM相关检查
因为未使用官方订阅,需要让Leapp跳过订阅验证:
- 编辑
/etc/leapp/answerfile,添加或修改以下配置:[check_rhsm] answer=False - 执行preupgrade时加上
--no-rhsm参数:leapp preupgrade --no-rhsm
5. 临时调整SELinux模式
SELinux可能会干扰Leapp的文件操作,临时切换到permissive模式:
- 实时生效:
setenforce 0 - 修改配置文件确保重启后生效:
sed -i 's/SELINUX=enforcing/SELINUX=permissive/' /etc/selinux/config(升级完成后可改回enforcing)
重新执行预升级
清理之前的Leapp缓存,然后重新运行预升级:
leapp clean leapp preupgrade --no-rhsm
查看新生成的leapp-report.txt,确认没有ERROR级别的阻断项后,就可以执行leapp upgrade正式升级了
内容的提问来源于stack exchange,提问作者Hemchand
相关产品推荐
相关产品推荐

