由一次构建 OpenEuler 22.03 dnf源所了解到的
零、说在前面今天在安装 Milvus 的时候因为部分插件下载过慢需要重建国内 yum/dnf 源按照常规的方式重建后报出了一些奇怪的报错。通过这些报错让我了解到了 OpenEuler 22.03 的不同版本在构建 yum/dnf 源的时候是存在区别的。因此将我的处理过程记录下来用以避坑。一、第一次重建yum/dnf源## 确认版本和架构 。我在执行下面命令时明明看到版本是 LTS-SP4 但没有引起重视导致了后续的踩坑 [rooteuler ~]# cat /etc/openEuler-release ## 备份当前 yum/dnf 源配置 [rooteuler ~]# sudo mkdir -p /etc/yum.repos.d/bak [rooteuler ~]# sudo mv /etc/yum.repos.d/*.repo /etc/yum.repos.d/bak/ ## 使用国内华为镜像重建 openEuler 22.03 源 [rooteuler ~]# sudo tee /etc/yum.repos.d/openEuler.repo EOF [openEuler-everything] nameopenEuler-everything baseurlhttps://repo.huaweicloud.com/openeuler/openEuler-22.03-LTS/everything/x86_64/ enabled1 gpgcheck1 gpgkeyhttps://repo.huaweicloud.com/openeuler/openEuler-22.03-LTS/everything/x86_64/RPM-GPG-KEY-openEuler [openEuler-EPOL] nameopenEuler-EPOL baseurlhttps://repo.huaweicloud.com/openeuler/openEuler-22.03-LTS/EPOL/main/x86_64/ enabled1 gpgcheck0 [openEuler-update] nameopenEuler-update baseurlhttps://repo.huaweicloud.com/openeuler/openEuler-22.03-LTS/update/x86_64/ enabled1 gpgcheck0 EOF ## 清理缓存并重建索引 [rooteuler ~]# sudo dnf clean all [rooteuler ~]# sudo dnf makecache ## 如果习惯用 yum也可以 [rooteuler ~]# sudo yum clean all [rooteuler ~]# sudo yum makecache ## 更新dnf 源 [rooteuler ~]# sudo dnf update -y二、问题出现及原因当我执行了 sudo dnf update -y 命令后问题出现报错信息如下Last metadata expiration check: 0:00:40 ago on 2026年05月22日 星期五 16时27分31秒. Error: Problem 1: 无法同时安装 NetworkManager-1:1.32.12-12.oe2203.x86_64 和 NetworkManager-1:1.32.12-20.oe2203sp4.x86_64 - 无法为软件包安装最佳更新候选 NetworkManager-team-1:1.32.12-20.oe2203sp4.x86_64 - 安装的软件包的问题 NetworkManager-1:1.32.12-20.oe2203sp4.x86_64 Problem 2: 无法同时安装 git-2.33.0-10.oe2203.x86_64 和 git-2.33.0-20.oe2203sp4.x86_64 - 无法为软件包安装最佳更新候选 git-core-2.33.0-20.oe2203sp4.x86_64 - 安装的软件包的问题 git-2.33.0-20.oe2203sp4.x86_64 Problem 3: 无法同时安装 nfs-utils-1:2.5.4-4.oe2203.x86_64 和 nfs-utils-2:2.5.4-15.oe2203sp4.x86_64 - 无法为软件包安装最佳更新候选 libnfsidmap-2:2.5.4-15.oe2203sp4.x86_64 - 安装的软件包的问题 nfs-utils-2:2.5.4-15.oe2203sp4.x86_64 Problem 4: 软件包 samba-client-4.15.3-20.oe2203.x86_64 取代了 samba-client-libs由 samba-client-libs-4.17.5-12.oe2203sp4.x86_64 提供 - 软件包 libsmbclient-4.17.5-12.oe2203sp4.x86_64 需要 libgenrand-samba4.so(SAMBA_4.17.5_SAMBA4)(64bit)但没有提供者可以被安装 - 软件包 libsmbclient-4.17.5-12.oe2203sp4.x86_64 需要 libreplace-samba4.so(SAMBA_4.17.5_SAMBA4)(64bit)但没有提供者可以被安装 - 软件包 libsmbclient-4.17.5-12.oe2203sp4.x86_64 需要 libsamba-debug-samba4.so(SAMBA_4.17.5_SAMBA4)(64bit)但没有提供者可以被安装 - 软件包 libsmbclient-4.17.5-12.oe2203sp4.x86_64 需要 libsamba-security-samba4.so(SAMBA_4.17.5_SAMBA4)(64bit)但没有提供者可以被安装 - 软件包 libsmbclient-4.17.5-12.oe2203sp4.x86_64 需要 libsamba3-util-samba4.so(SAMBA_4.17.5_SAMBA4)(64bit)但没有提供者可以被安装 - 软件包 libsmbclient-4.17.5-12.oe2203sp4.x86_64 需要 libsecrets3-samba4.so(SAMBA_4.17.5_SAMBA4)(64bit)但没有提供者可以被安装 - 软件包 libsmbclient-4.17.5-12.oe2203sp4.x86_64 需要 libcli-smb-common-samba4.so(SAMBA_4.17.5_SAMBA4)(64bit)但没有提供者可以被安装 - 软件包 libsmbclient-4.17.5-12.oe2203sp4.x86_64 需要 libdcerpc-samba-samba4.so(SAMBA_4.17.5_SAMBA4)(64bit)但没有提供者可以被安装 - 软件包 libsmbclient-4.17.5-12.oe2203sp4.x86_64 需要 libgse-samba4.so(SAMBA_4.17.5_SAMBA4)(64bit)但没有提供者可以被安装 - 软件包 libsmbclient-4.17.5-12.oe2203sp4.x86_64 需要 liblibcli-lsa3-samba4.so(SAMBA_4.17.5_SAMBA4)(64bit)但没有提供者可以被安装 - 软件包 libsmbclient-4.17.5-12.oe2203sp4.x86_64 需要 liblibsmb-samba4.so(SAMBA_4.17.5_SAMBA4)(64bit)但没有提供者可以被安装 - 软件包 libsmbclient-4.17.5-12.oe2203sp4.x86_64 需要 libmsrpc3-samba4.so(SAMBA_4.17.5_SAMBA4)(64bit)但没有提供者可以被安装 - 软件包 libsmbclient-4.17.5-12.oe2203sp4.x86_64 需要 libndr.so.3()(64bit)但没有提供者可以被安装 - 软件包 libsmbclient-4.17.5-12.oe2203sp4.x86_64 需要 libndr.so.3(NDR_0.0.1)(64bit)但没有提供者可以被安装 - 无法为软件包安装最佳更新候选 samba-client-libs-4.17.5-12.oe2203sp4.x86_64 - 安装的软件包的问题 libsmbclient-4.17.5-12.oe2203sp4.x86_64 (try to add --allowerasing to command line to replace conflicting packages or --skip-broken to skip uninstallable packages or --nobest to use not only best candidate packages)报错截图如下经过了解得知上面报错的原因是由于我从 OpenEuler 22.03 LTS版本仓库获取内容并构建yum源但我的操作系统上应该使用 22.03 LTS SP4 的仓库。这就导致 dnf 试图把一些核心包NetworkManager、git、nfs-utils、samba 等从oe2203升级到oe2203sp4结果依赖不完整导致问题发生。三、第二次重建yum/dnf 源知道了问题就好解决了。操作步骤如下## 移除当前 yum/dnf 源配置 [rooteuler ~]# sudo mv /etc/yum.repos.d/*.repo /etc/yum.repos.d/bak/ ## 重写 22.03 LTS SP4 的国内华为源 [rooteuler ~]# sudo tee /etc/yum.repos.d/openEuler-sp4.repo EOF [openEuler-SP4-os] nameopenEuler-22.03-LTS-SP4 OS baseurlhttps://repo.huaweicloud.com/openeuler/openEuler-22.03-LTS-SP4/OS/x86_64/ enabled1 gpgcheck1 gpgkeyhttps://repo.huaweicloud.com/openeuler/openEuler-22.03-LTS-SP4/OS/x86_64/RPM-GPG-KEY-openEuler [openEuler-SP4-everything] nameopenEuler-22.03-LTS-SP4 everything baseurlhttps://repo.huaweicloud.com/openeuler/openEuler-22.03-LTS-SP4/everything/x86_64/ enabled1 gpgcheck0 [openEuler-SP4-EPOL] nameopenEuler-22.03-LTS-SP4 EPOL baseurlhttps://repo.huaweicloud.com/openeuler/openEuler-22.03-LTS-SP4/EPOL/main/x86_64/ enabled1 gpgcheck0 [openEuler-SP4-update] nameopenEuler-22.03-LTS-SP4 update baseurlhttps://repo.huaweicloud.com/openeuler/openEuler-22.03-LTS-SP4/update/x86_64/ enabled1 gpgcheck0 EOF ## 清理缓存并重建索引 [rooteuler ~]# sudo dnf clean all [rooteuler ~]# sudo dnf makecache ## 如果习惯用 yum也可以 [rooteuler ~]# sudo yum clean all [rooteuler ~]# sudo yum makecache ## 更新dnf 源 ## 其中 --nobest不强制选「最高版本」组合避免少数包依赖不完整时卡死 ## --allowerasing允许 dnf 一些旧包被新包替代或卸载以解决类似 “无法同时安装 xxx-oe2203 和 xxx-oe2203sp4” 的冲突 ## --skip-broken 如果下面命令在执行时仍有个别包报错可以加上这个参数 [rooteuler ~]# sudo dnf update --nobest --allowerasing ## 验证源版本统一 ## 正常情况下这些包的版本号应该都是形如 xxx.oe2203sp4而不是 xxx.oe2203表示系统和仓库都处于 SP4 这一档 [rooteuler ~]# dnf list installed | egrep NetworkManager|git|nfs-utils|samba至此问题解决。四、感悟最大的收获是知道了LTS-SP4 版本是 22.03 LTS 的最终累积更新版所有新部署和生产环境都应该直接用 SP4不要用基础 LTS 版。虽然LTS和LTS-SP4 都属于OpenEuler 22.03但是前者的出版时间是2022 年后者是2024 年其中内容差异的距离足足有从天津到乌鲁木齐的距离那么大......
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/2633943.html
如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!