类库大魔王
类库大魔王 多年C++、Go项目经验,长期从事跨平台(Windows/macOS/iOS/Android)应用架构设计与开发。

本地镜像Rust nightly build


自从Rust版本号跳到1.0,即使离正式发布还有很长一段时间,我就开始打算要学一下Rust,主要还是因为想跟Go比较一下,用Go也一年了,已经能做些比较实用的小项目了,我想看看Rust有哪些方面更优秀,或者说比Go更合适来做某些方面的开发。

虽然还没正式开始学,但兵马未动,粮草先行。我先看看怎么安装Rust,然后看到Rust的快速迭代,可以用命令安装每天的nightly build:

1
curl -s https://static.rust-lang.org/rustup.sh | sudo sh -s -- --channel=nightly

但是在我大天朝如此奇特的网络环境中,这个命令会有些问题。情况好一点的话,也就是下载速度会很慢,情况差一点就下载压根被重置了,貌似是因为下载的URL中包含了特殊字符串“64”,咳咳。所以建立个镜像来做这个事很有必要。

首先,我有个7*24小时开机的Raspberry Pi当下载机,写个简单的shell脚本加到cron中去每天上午10点定时执行一次,用于下载最新的nightly build包到本地:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
#!/bin/bash
cd /home/pi/rust/dist
curl -O --socks5 127.0.0.1:1080 https://static.rust-lang.org/dist/rust-nightly-x86_64-unknown-linux-gnu.tar.gz
curl -O --socks5 127.0.0.1:1080 https://static.rust-lang.org/dist/rust-nightly-x86_64-unknown-linux-gnu.tar.gz.sha256
curl -O --socks5 127.0.0.1:1080 https://static.rust-lang.org/dist/rust-nightly-i686-unknown-linux-gnu.tar.gz
curl -O --socks5 127.0.0.1:1080 https://static.rust-lang.org/dist/rust-nightly-i686-unknown-linux-gnu.tar.gz.sha256
curl -O --socks5 127.0.0.1:1080 https://static.rust-lang.org/dist/rust-nightly-x86_64-apple-darwin.pkg
curl -O --socks5 127.0.0.1:1080 https://static.rust-lang.org/dist/rust-nightly-x86_64-apple-darwin.pkg.sha256
curl -O --socks5 127.0.0.1:1080 https://static.rust-lang.org/dist/rust-nightly-x86_64-apple-darwin.tar.gz
curl -O --socks5 127.0.0.1:1080 https://static.rust-lang.org/dist/rust-nightly-x86_64-apple-darwin.tar.gz.asc
curl -O --socks5 127.0.0.1:1080 https://static.rust-lang.org/dist/rust-nightly-x86_64-apple-darwin.tar.gz.sha256
curl -O --socks5 127.0.0.1:1080 https://static.rust-lang.org/dist/rust-nightly-x86_64-pc-windows-gnu.exe
curl -O --socks5 127.0.0.1:1080 https://static.rust-lang.org/dist/rust-nightly-x86_64-pc-windows-gnu.exe.sha256
curl -O --socks5 127.0.0.1:1080 https://static.rust-lang.org/dist/channel-rust-nightly.sha256
curl -O --socks5 127.0.0.1:1080 https://static.rust-lang.org/dist/channel-rust-nightly.asc
curl -O --socks5 127.0.0.1:1080 https://static.rust-lang.org/dist/channel-rust-nightly

这里最重要的就是通过socks5代理翻墙了。为什么是每天上午10点,也是稍微有点讲究的,我是假设Raspberry Pi从官网下载速度并不快,但又要下载大约500MB的东西,而每天我本地更新Rust的时间基本上是晚上7点后,所以要留出足够多的时间用于下载,又尽量少的时间空档。

然后把本地目录/home/pi/rust通过http服务器暴露出来,假设是在http://192.168.3.100/rust/,最后把最上面那个更新安装Rust的命令稍微修改一下:

1
curl -s --socks5 127.0.0.1:1080 https://static.rust-lang.org/rustup.sh | sed 's/https:\/\/static\.rust\-lang\.org/http:\/\/192.168.3.100\/rust/g' | sed 's/http:\/\/static\-rust\-lang\-org\.s3\-website\-us\-west\-1\.amazonaws\.com/http:\/\/192.168.3.100\/rust/g' | sudo sh -s -- --channel=nightly

这样就能以Raspberry Pi的最大输出速率更新Rust到最新的nightly build啦!

感觉本文不错,不妨小额鼓励我一下!
如果你有Visa、MasterCard之类的国际银行卡,也可以考虑以下选项:
如果你看不到评论框,说明Disqus被墙了。