1

我在本地服务器上托管 2 个存储库(myrepo-main 和 AppStream)。myrepo-main 托管 mysql 商业 rpm 和其他一些软件包。
除非我禁用 AppStream 存储库,否则大多数 mysql 包都是不可见的。

$ sudo dnf list | grep ^mysql
mysql-commercial-libs-compat.x86_64                  5.7.29-1.1.el7                                    myrepo-main

禁用 AppStream 存储库允许我查看存储库中的 mysql 包。

$ sudo dnf --disablerepo=AppStream --enablerepo=myrepo* list | grep ^mysql
mysql-commercial-client.x86_64                     5.7.29-1.1.el7                          myrepo-main
mysql-commercial-common.x86_64                     5.7.29-1.1.el7                          myrepo-main
mysql-commercial-libs.x86_64                       5.7.29-1.1.el7                          myrepo-main
mysql-commercial-libs-compat.x86_64                5.7.29-1.1.el7                          myrepo-main
mysql-commercial-server.x86_64                     5.7.29-1.1.el7                          myrepo-main

存储库中的其他包在 myrepo 中可见,而无需禁用 AppStream 存储库

$ sudo dnf  list | grep myrepo
jre1.8.x86_64                                        1.8.0_211-fcs                                     @myrepo-main
tomcat.x86_64                                        8.5.41-2                                          @myrepo-main
mysql-commercial-libs-compat.x86_64                  5.7.29-1.1.el7                                    myrepo-main

我已经从客户端的 AppStream 存储库中排除了 mysql 包。

[AppStream]
name=FW-CentOS-$releasever - AppStream
baseurl=http://192.168.20.230/repos/x86/8/AppStream/AppStream
gpgcheck=1
enabled=1
gpgkey=http://192.168.20.230/repos/x86/8/RPM-GPG-KEY-FWRepo
priority=98
exclude=mysql-server,mysql-common,mysql-devel,mysql-errmsg,mysql-libs,mysql-test,mysql,mariadb,mariadb-server

[myrepo-main]
name=MyRepo Main
baseurl=http://192.168.20.230/repos/x86/8/fairwarning/fwpackages/
enabled=1
gpgcheck=1
gpgkey=http://192.168.20.230/repos/x86/8/fairwarning/fwpackages/RPM-GPG-KEY-FWRepo
priority=1

我努力了 :

dnf clean all
rm -rf /var/cache/dnf/

我还尝试使用 reposync 创建没有元数据的 AppStream,删除所有 mysql rpm 并使用 createrepo_c 生成元数据。这让我可以看到 myrepo 中的 mysql 包,但其他包在生成的元数据方面存在问题,无法安装。

我们的 CentOS6 主机有类似的配置,可以正常工作。我怀疑这是 dnf 或 AppStream 的一些功能。

4

1 回答 1

0

来自用户 EOhm 的回答

据我了解,这是必要的,因为 EL8 引入了新的模块系统。如果 dnf 检测到 pgdg 包提供的东西也在模块中,但它们本身没有打包为适当的模块,则默认情况下会过滤 pgdg 包。

所以有多种解决方案:

  • 如前所述,添加module_hotfixes=truerepo 定义,它允许 DNF 更新或安装也作为模块提供的包(即使尚未安装)
  • 就像dnf --disablerepo AppStreamOP 一样使用,这可能很乏味
  • 禁用导致问题的模块dnf module disable xxx(我不知道这里有问题的模块的名称)
于 2020-02-28T20:04:13.760 回答