如何升级服务器/opt/posterm/x86_64路径下的RHEL瘦客户端?
解决RHEL瘦客户端升级仓库错误问题
错误原因
你执行的命令中--setopt=reposdir=/repo/BaseOS参数有误:reposdir指定的是存放.repo配置文件的目录,而/repo/BaseOS是仓库的软件包存储目录,并非配置文件所在路径,因此dnf无法识别到启用的仓库。
解决步骤
方法1:直接在命令中指定仓库源
无需额外配置repo文件,直接在升级命令中临时指定BaseOS和AppStream的仓库路径:
dnf --installroot=/opt/posterm/x86_64/ \ --disablerepo=* \ --enablerepo=local_baseos \ --enablerepo=local_appstream \ --setopt=local_baseos.baseurl=file:///repo/BaseOS \ --setopt=local_appstream.baseurl=file:///repo/AppStream \ --setopt=local_baseos.enabled=1 \ --setopt=local_appstream.enabled=1 \ upgrade
--disablerepo=*:禁用所有默认仓库,避免冲突- 临时创建两个本地仓库并指定其路径,确保dnf能识别到可用的软件源
方法2:配置临时repo目录
- 创建临时目录存放repo配置文件:
mkdir -p /tmp/local_repos
- 复制镜像中的
media.repo并修改为BaseOS仓库配置:
cp /repo/media.repo /tmp/local_repos/baseos.repo sed -i 's/name=.*/name=Local BaseOS Repository/' /tmp/local_repos/baseos.repo sed -i 's/baseurl=.*/baseurl=file:\/\/\/repo\/BaseOS/' /tmp/local_repos/baseos.repo sed -i 's/enabled=.*/enabled=1/' /tmp/local_repos/baseos.repo
- 复制一份并修改为AppStream仓库配置:
cp /tmp/local_repos/baseos.repo /tmp/local_repos/appstream.repo sed -i 's/name=.*/name=Local AppStream Repository/' /tmp/local_repos/appstream.repo sed -i 's/baseurl=.*/baseurl=file:\/\/\/repo\/AppStream/' /tmp/local_repos/appstream.repo
- 执行升级命令,指定临时repo目录:
dnf --installroot=/opt/posterm/x86_64/ --setopt=reposdir=/tmp/local_repos upgrade
额外注意事项
- 你的本地镜像为Oracle Linux 8(从
OL8-RELNOTES8-7.zip可判断),与RHEL 8二进制兼容,可正常使用。若出现GPG密钥验证错误,可导入镜像中的密钥:
rpm --root=/opt/posterm/x86_64/ --import /repo/RPM-GPG-KEY-oracle
- 若
installroot目录下已有其他repo配置,建议加上--disablerepo=*避免干扰。
内容的提问来源于stack exchange,提问作者dirman
相关产品推荐
相关产品推荐

