在 CentOS 7 上安装 dnf 后出错

use*_*019 6 centos dnf

dnf根据这些说明安装:

yum install epel-release -y
yum install dnf
Run Code Online (Sandbox Code Playgroud)

之后dnf --version工作正常,但dnf repolist或其他任何东西都给出:

Extra Packages for Enterprise Linux 7 - x86_64  668 kB/s | 9.4 MB     00:14
Failed to open: /var/cache/dnf/x86_64/7/x86_64/7/epel/repodata/e8...19-updateinfo.xml.bz2.
Run Code Online (Sandbox Code Playgroud)

而跑步dnf clean all并不能解决这个问题。

似乎有关于此的错误报告,没有解决方案。

有什么方法可以dnf在 CentOS 7 上工作吗?

Ant*_*hon 8

我不确定为什么会这样,但看起来 epel-release 存储库(从您安装的位置dnf)与dnf自身不兼容。安装后dnf,首先使用yum以下方法删除它:

yum remove epel-release
Run Code Online (Sandbox Code Playgroud)

在那之后:

dnf repolist
dnf list installed
Run Code Online (Sandbox Code Playgroud)

等工作(至少在我的 CentOS 7 系统上)。


Kev*_*vin 5

该问题可能与已安装的 libsolv 版本不支持 bzip2 压缩有关。像我一样,您可能没有安装最新版本,因为在 repo 配置文件中设置了优先级。

无法打开:/var/cache/dnf/x86_64/7/x86_64/7/epel/...xml。bz2

请参阅错误报告1258416

libsolv-0.6.14-1.el7 已被推送到 Fedora EPEL 7 稳定存储库。如果问题仍然存在,请在此错误报告中注明。

CentOS 软件base库安装的 libsolv是 0.6.11-1.el7,但里面的那个epel是 0.6.14-1.el7。

yum --showduplicates --disablerepo=base list libsolv
Installed Packages
libsolv.x86_64          0.6.11-1.el7          @base
Available Packages
libsolv.x86_64          0.6.14-1.el7          epel
Run Code Online (Sandbox Code Playgroud)

解决方案

epel存储库安装 libsolv 。

yum --disablerepo=base install libsolv-0.6.14-1.el7
Run Code Online (Sandbox Code Playgroud)

编辑:2016-06-17

正如评论中所见,这仍然是包存储库的一个活跃错误。这是因为libsolv在 EPEL中被标记为“已退休”而没有任何解释(Theodor van Nahl)。丹尼斯M.Pöpperl指出的是,这已经似乎已经在CentOS的和RHEL一直致力于版本的RPM包都可以在这里在Fedora的构建系统。