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.conf proxy_username
とproxy_password
に必要な値を設定しました。
http_proxy=http://username:password@proxy:port/
を設定する.bashrcもあります。次に、curl http://download.fedoraproject.org/pub/Fedora/linux/updates/26/x86_64/repodata/repomd.xml
を実行すると、HTTP 407で失敗します。--proxy-ntlm
を追加すると機能します。 bugzilla によると、dnf
はすでにパッチされており、libcurl
を呼び出すときにNTLMを許可します。
ただし、yum
は、Kerberos /「ネゴシエート」認証を無効にするために追加で使用されます。これは、最初のオプションが提供される場合があり、NTLMが機能する場所では失敗するためです。この2番目のパッチは提供されましたが、最初の問題のみを解決した後でバグはクローズされました...
dnf update
を機能させるにはどうすればよいですか?
ようやく解決策を見つけました。問題はこのバグですが、まだ修正されていません: 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)
bugzilla によると、dnf
はすでにパッチされており、libcurl
を呼び出すときにNTLMを許可します。
ただし、yum
は、Kerberos /「ネゴシエート」認証を無効にするために追加で使用されます。これは、最初のオプションが提供される場合があり、NTLMが機能する場所では失敗するためです。この2番目の問題に対するパッチが提供されましたが、最初の問題のみを解決した後でバグはクローズされました... NTLMが機能することを考えると、これはおそらくあなたの問題です。 (この状況をHTTP応答ヘッダーがどのように見えるかについての詳細を確認するには、バグを確認してください(たとえば、Wiresharkでキャプチャした場合))。
この場合、現在利用できる唯一の解決策は、ローカルコンピューターにプロキシを設定することです。これにより、基本認証がNTLM認証などに変換されます。 NTLM-APS を参照してください。
dnf.confに追加
proxy=http://Cisco-wsa.internal.net:3128
proxy_username=myusername
proxy_password=VeryStrongPassword