web-dev-qa-db-ja.com

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.conf proxy_usernameproxy_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を機能させるにはどうすればよいですか?

3
barq

ようやく解決策を見つけました。問題はこのバグですが、まだ修正されていません: 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
barq

bugzilla によると、dnfはすでにパッチされており、libcurlを呼び出すときにNTLMを許可します。

ただし、yumは、Kerberos /「ネゴシエート」認証を無効にするために追加で使用されます。これは、最初のオプションが提供される場合があり、NTLMが機能する場所では失敗するためです。この2番目の問題に対するパッチが提供されましたが、最初の問題のみを解決した後でバグはクローズされました... NTLMが機能することを考えると、これはおそらくあなたの問題です。 (この状況をHTTP応答ヘッダーがどのように見えるかについての詳細を確認するには、バグを確認してください(たとえば、Wiresharkでキャプチャした場合))。

この場合、現在利用できる唯一の解決策は、ローカルコンピューターにプロキシを設定することです。これにより、基本認証がNTLM認証などに変換されます。 NTLM-APS を参照してください。

1
sourcejedi

dnf.confに追加

proxy=http://Cisco-wsa.internal.net:3128
proxy_username=myusername
proxy_password=VeryStrongPassword
1
Sérgio