gpt4 book ai didi

ssl - Windows 上代理后面的 cargo ssl 下载错误

转载 作者:行者123 更新时间:2023-11-29 07:58:05 25 4
gpt4 key购买 nike

我无法让 cargo 在经过身份验证的代理后面的 Windows 下开始任何下载。

这是我的代理设置:-

C:\Users\ukb99427\Downloads
λ set | grep http
https_proxy=http://user:pass@corporate.proxy:8080
http_proxy=http://user:pass@corporate.proxy:8080

注意 https_proxy 有一个 http 地址。这允许像 git 和附带的 rustup-init 和 rustup 这样的东西正常工作。这些的输出是

λ rustup update
info: syncing channel updates for 'stable-x86_64-pc-windows-msvc'
info: syncing channel updates for 'nightly-x86_64-pc-windows-msvc'
info: latest update on 2017-11-10, rust version 1.23.0-nightly (d6b06c63a 2017-11-09)
info: downloading component 'rustc'
33.4 MiB / 33.4 MiB (100 %) 2.7 MiB/s ETA: 0 s

但是当运行等效的 cargo install 命令时,我得到以下结果

λ cargo install libc
Updating registry `https://github.com/rust-lang/crates.io-index`
warning: spurious network error (2 tries remaining): [12/-2] [56] Failure when receiving data from the peer
warning: spurious network error (1 tries remaining): [12/-2] [56] Failure when receiving data from the peer

作为测试,我可以运行 curl

λ curl --insecure https://github.com/rust-lang/crates.io-index -o registry.html
% Total % Received % Xferd Average Speed Time Time Time Current
Dload Upload Total Spent Left Speed
100 785k 0 785k 0 0 389k 0 --:--:-- 0:00:02 --:--:-- 393k

或者我尝试将 https_proxy 设置为 https://user:pass@corporate.proxy:8080

得到以下内容

λ cargo install libc
Updating registry `https://github.com/rust-lang/crates.io-index`
warning: spurious network error (2 tries remaining): [12/-2] [4] A requested feature, protocol or option was not found built-in in this libcurl due to a build-time decision. (Unsupported proxy 'https://user:pass@corporate.proxy:8080', libcurl is built without the HTTPS-proxy support.)
warning: spurious network error (1 tries remaining): [12/-2] [4] A requested feature, protocol or option was not found built-in in this libcurl due to a build-time decision. (Unsupported proxy 'https://user:pass@corporate.proxy:8080', libcurl is built without the HTTPS-proxy support.)
error: failed to fetch `https://github.com/rust-lang/crates.io-index`

Caused by:
[12/-2] [4] A requested feature, protocol or option was not found built-in in this libcurl due to a build-time decision. (Unsupported proxy 'https://user:pass@corporate.proxy:8080', libcurl is built without the HTTPS-proxy support.)

引用 curl --version 输出

λ curl --version
curl 7.53.0 (x86_64-w64-mingw32) libcurl/7.53.0 OpenSSL/1.0.2k zlib/1.2.11 libssh2/1.8.0 nghttp2/1.19.0 librtmp/2.3
Protocols: dict file ftp ftps gopher http https imap imaps ldap ldaps pop3 pop3s rtmp rtsp scp sftp smtp smtps telnet tftp
Features: IPv6 Largefile SSPI Kerberos SPNEGO NTLM **SSL** libz TLS-SRP HTTP2 HTTPS-proxy Metalink

cargo 版

λ cargo version
cargo 0.24.0-nightly (b83550edc 2017-11-04)

有没有办法让 cargo 使用与 rustup、git 或 curl 相同的设置?其他应用程序工作正常,使用 sslverify=false(例如 git),这充其量是一种解决方法,但会让我到达某个地方而不是无处可去。

这一切都在 Windows10 上,在经过身份验证的代理之后。在没有给出用户/密码的情况下,它(和任何应用程序)退出时出现 HTTP 错误 407,这是有道理的。对于 Windows 应用程序,他们使用工作正常的 IE 设置(对于 Visual Studio Code 或类似的应用程序)

我能想到的唯一选择是强制一切都只使用 http,但我不知道有什么设置可以让 cargo 发生这种情况。

关于我还可以尝试什么的任何想法?

最佳答案

我为此苦苦挣扎了一段时间,但最终找到了解决方法。我将其发布在这里,作为公司防火墙后面的人的可能解决方案。遗憾的是,如果人们不能在工作中轻松安装它,它确实会减少 rust 的采用。

从github下载crates-io

git clone --bare https://github.com/rust-lang/crates.io-index.git

在 $HOME/.cargo/config 文件中设置注册表

[registry]
index = "file:///C:/Users/someuser/crates.io-index.git"

这会停止通过显然不支持 https_proxy 的 libgit-curl 下载注册表。

我认为(但我还没有测试过)一个更长期的解决方案是使用支持 https 的 libgit-curl 重建 cargo。

关于ssl - Windows 上代理后面的 cargo ssl 下载错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47221811/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com