包管理器 DNF 已损坏

问题描述 投票:0回答:3

在 Fedora 23 中,有人知道为什么 DNF 会搞砸吗?

root>dnf info       
Traceback (most recent call last):
  File "/usr/bin/dnf", line 58, in <module>
    main.user_main(sys.argv[1:], exit_code=True)
  File "/usr/lib/python2.7/site-packages/dnf/cli/main.py", line 174, in user_main
    errcode = main(args)
  File "/usr/lib/python2.7/site-packages/dnf/cli/main.py", line 60, in main
    return _main(base, args)
  File "/usr/lib/python2.7/site-packages/dnf/cli/main.py", line 112, in _main
    cli.run()
  File "/usr/lib/python2.7/site-packages/dnf/cli/cli.py", line 1098, in run
    self._process_demands()
  File "/usr/lib/python2.7/site-packages/dnf/cli/cli.py", line 813, in _process_demands
    load_available_repos=lar)
  File "/usr/lib/python2.7/site-packages/dnf/base.py", line 239, in fill_sack
    self._add_repo_to_sack(r)
  File "/usr/lib/python2.7/site-packages/dnf/base.py", line 115, in _add_repo_to_sack
    hrepo.filelists_fn = repo.filelists_fn
TypeError: Expected a string or a unicode object

无法使用其他 dnf 命令

fedora dnf
3个回答
2
投票

我遇到了同样的问题,从 /etc/yum.repos.d/ 文件夹中删除一个(很可能已损坏).repo 解决了问题。


0
投票

删除了所有存储库。似乎已损坏。


0
投票

我在设置 Artifactory rpm 存储库时遇到了这个问题,正如其他评论所建议的,它与存储库配置有关。

如果您查看引发错误的 _add_repo_to_sack(r) 方法的开头:

def _add_repo_to_sack(self, repo):
        repo.load()
        hrepo = repo._hawkey_repo
        hrepo.repomd_fn = repo._repomd_fn
        hrepo.primary_fn = repo._primary_fn
        hrepo.filelists_fn = repo._filelists_fn
...

所有任务都对应于加载存储库配置和元数据,准备供 DNF 使用。

我对这些不是100%,但我认为:

  • hrepo.repomd_fn = repo._repomd_fn
    指定repomd.xml 文件的路径
  • hrepo.primary_fn = repo._primary_fn
    将路径分配给primary.xml 文件
  • hrepo.filelists_fn = repo._filelists_fn
    指定 filelists.xml 文件的路径

看到这个后,我检查了我的存储库 repodata/repomd.xml 元数据文件,并注意到它缺少“filelists”条目(因此出现错误)。

我必须在 JFrog Artifactory 存储库中“启用文件列表索引”,以便 RPM 元数据计算也将包括对 filelists.xml 元数据文件进行索引。一旦该文件包含在存储库中,dnf 就可以正常工作了。

© www.soinside.com 2019 - 2024. All rights reserved.