Cargo设置

Cargo设置: Cargo Crates Registry Source设置和代理设置

source设置

Cargo Crates Registry Source设置.

添加source

为了加快 cargo 的下载速度,避免网速慢或者被墙,添加国内源头 ustc ,需修改 ~/.cargo/config 加入以下内容:

[source.crates-io]
registry = "https://github.com/rust-lang/crates.io-index"
replace-with = 'ustc'

[source.ustc]
registry = "git://mirrors.ustc.edu.cn/crates.io-index"
#registry = "https://mirrors.ustc.edu.cn/crates.io-index"

[http]
check-revoke = false

其中添加 check-revoke = false 是为了解决下面的问题:

warning: spurious network error (2 tries remaining): [6] Couldn't resolve host name (Could not resolve host: crates-io.proxy.ustclug.org)
warning: spurious network error (1 tries remaining): [6] Couldn't resolve host name (Could not resolve host: crates-io.proxy.ustclug.org)
error: failed to download from `https://crates-io.proxy.ustclug.org/api/v1/crates/serde_test/1.0.126/download`

Caused by:
  [6] Couldn't resolve host name (Could not resolve host: crates-io.proxy.ustclug.org)

参考资料

代理设置

网络代理问题

执行 make 命令时遇到问题,卡在 git clone 上:

$ make
cargo fetch --locked
    Updating git repository `https://github.com/linkerd/prost`
    ......(速度太慢,卡住过不去)

git代理设置

我平时一般用 ssh 方式操作git,通过设置 ~/.ssh/config 文件的方式来设置代理,如:

# 这里必须是 github.com,因为这个跟我们 clone 代码时的链接有关
Host github.com
# 如果用默认端口,这里是 github.com,如果想用443端口,这里就是 ssh.github.com 详
见 https://help.github.com/articles/using-ssh-over-the-https-port/
#HostName ssh.github.com
HostName github.com
User git
# 如果是 HTTP 代理,把下面这行取消注释,并把 proxyport 改成自己的 http 代理的端>口
#ProxyCommand socat - PROXY:127.0.0.1:%h:%p,proxyport=3333

# 如果是 socks5 代理,则把下面这行取消注释,并把 23456 改成自己 socks5 代理的端口
ProxyCommand nc -v -x 127.0.0.1:23456 %h %p

上面信息中时通过 https 来操作git仓库,所以想着设置 git 的 http 代理,常见的方式是通过 git config --global 命令,支持 http 代理和 socks5 代理:

# 使用 http 代理
git config --global http.proxy http://192.168.0.1:3333

# 使用 socks5 代理
git config --global http.proxy socks5://192.168.0.1:23456

可以在 ~/.gitconfig 中看到设置的结果。

Cargo代理设置

但是,上面的设置只对直接使用 git 命令有效,当使用 cargo 命令时,依然会卡住。

需要为 cargo 单独设置代理,新建或打开文件 ~/.cargo/config ,使用 http 代理:

[http]
proxy = "192.168.0.1:3333"
[https]
proxy = "192.168.0.1:3333"

使用 socks5代理:

[http]
proxy = "socks5://192.168.0.1:23456"
[https]
proxy = "socks5://192.168.0.1:23456"