Fedora 26:dnf 更新无法在代理后面工作 - 无法同步存储库“更新”的缓存

Fedora 26:dnf 更新无法在代理后面工作 - 无法同步存储库“更新”的缓存

在 Fedora 26 上,当我这样做时,sudo dnf -v update我收到错误

>     Loaded plugins: builddep, config-manager, copr, debug, debuginfo-install, download, generate_completion_cache,
> needs-restarting, playground, repoclosure, repograph, repomanage,
> reposync, system-upgrade
>     DNF version: 2.6.3
>     cachedir: /var/cache/dnf
>     Cannot download 'http://download.fedoraproject.org/pub/fedora/linux/updates/26/x86_64/':
> Cannot download repomd.xml: Cannot download repodata/repomd.xml: All
> mirrors were tried.
>     Error: Failed to synchronize cache for repo 'updates'

我配置了系统范围的代理和 dnf.conf 中的代理。其他连接(例如浏览器)可使用此代理。代理需要身份验证 - 我已在 dnf.confproxy_username和中设置了所需的值proxy_password

我还有一个 .bashrc 设置http_proxy=http://username:password@proxy:port/.然后,如果我运行curl http://download.fedoraproject.org/pub/fedora/linux/updates/26/x86_64/repodata/repomd.xml,它会失败并显示 HTTP 407。如果我添加--proxy-ntlm.根据布吉拉dnf已被修补,以便在调用 时允许 NTLM libcurl

但是,yum还用于禁用 Kerberos/“协商”身份验证,因为在某些情况下,这将是提供的第一个选项,并且在 NTLM 可以工作的情况下它会失败。第二个问题提供了补丁,但仅解决了第一个问题后,该错误就被关闭了......

我怎样才能去dnf update上班?

答案1

我终于找到了解决办法。问题是这个bug,目前还没有修复: https://bugzilla.redhat.com/show_bug.cgi?id=1387622

我必须编辑 /usr/lib/python3.6/site-packages/dnf/repo.py 并更改以下内容:

-        h.setopt(librepo.LRO_PROXYAUTH, True)
+        h.setopt(librepo.LRO_PROXYAUTHMETHODS, 8)

答案2

根据布吉拉dnf已被修补,以便在调用 时允许 NTLM libcurl

但是,yum还用于禁用 Kerberos/“协商”身份验证,因为在某些情况下,这将是提供的第一个选项,并且在 NTLM 可以工作的情况下它会失败。针对第二个问题提供了补丁,但是在仅解决第一个问题后,该错误就被关闭了...考虑到 NTLM 对您有用,这很可能是您的问题。 (您可以查看该错误以了解有关 HTTP 回复标头在这种情况下的更多详细信息,例如,如果您使用 Wireshark 捕获它们)。

在这种情况下,当前唯一可用的解决方案似乎是在本地计算机上设置代理,将基本身份验证转换为 NTLM 身份验证或类似的身份验证。看NTLM-APS

答案3

在dnf.conf中添加

proxy=http://cisco-wsa.internal.net:3128
proxy_username=myusername
proxy_password=VeryStrongPassword

相关内容