飞行心得
由于一些众所周知而又不便提起的原因,从国内到外网的通信常常受到限制。即使未受封锁,通信质量也可能不高。
对于程序员而言,学习如何飞越这些障碍已经成为了一项必备的生存技能。本飞行手册记录和总结了几类常见的“飞行技巧”。
适用范围
pip install或conda install时提升速度;- 使用apt-get为Ubuntu系统安装软件时。例如,安装nvidia-container-toolkit时,必须配置源为“nvidia.github.io/……”,然而“github.io”这类网址是被封禁的,从而导致安装失败;
- git clone 或 git push 失败;
- 其它因为外网通信质量不佳导致的异常;
本文只介绍各类命令,参数的使用,不介绍代理服务器和信道的设置方法。
使用代理服务器
用环境变量设置全局代理
最常见的一个做法是在终端中设置环境变量来设置代理服务器。具体要执行的命令视操作系统的不同而有所区别。
在命令行环境或者终端中,可以执行下述命令来指定网络代理。
Linux:
export http_proxy="http://localhost:8889"
export https_proxy="http://localhost:8889"
Windows:
set http_proxy=http://localhost:8889
set https_proxy=http://localhost:8889
這種方式與在系統設置中設置代理的效用是相似的。
经验证,以下程序支持用这种方式设置代理:
conda installpip install
遗憾的是,不是所有程序都从环境变量中读取代理设置。
下面列出了一些常见的无法通过环境变量设置代理的程序,介绍了它们的代理设置方法。
Apt的代理设置
sudo apt -o Acquire::http::proxy="http://localhost:8889" update
Git代理的设置和取消
git使用如下命令設置代理服務器:
git config --global http.proxy http://127.0.0.1:1080
git config --global https.proxy https://127.0.0.1:1080
代理设置可以在~/.gitconfig文件中看到
若要取消代理,可以使用如下命令:
git config --unset http.proxy
git config --unset https.proxy
不要忘了在不用時撤銷代理設置。
無法設置代理服務器的情況
某些時候,我們找不到為某個軟件設置代理服務器的途徑,或者不想花費過多的時間在查詢文檔上面。這時候可以考慮更通用的做法。
通過瀏覽器將所需的資源預先下載下來
该方法以瀏覽器配置了代理,可以順利取得該資源为前提。例如,如果在運行DockerFile中的apt命令遇到問題,可以將無法下載的deb包記錄下來,用瀏覽器下載這個包。將該包複製到docker中,然後就可以從本地安裝這個包。
通过Gitee同步Github的仓库
Gitee有同步Github仓库的功能,并且不受墙的影響。當我們無法从Github拉取源碼時,可以考慮利用這一途徑。
例如,通過git安裝pycocotools失敗(命令:pip install -U 'git+https://github.com/cocodataset/cocoapi.git#subdirectory=PythonAPI' ),那麼可以在Gitee上同步該倉庫,將命令改為pip install -U 'git+https://gitee.com/.
未完待續
此文旨在記錄各種常見的,因爲“墻”而導致的,影響正常工作生活的網絡問題,以及記錄相應的解決方法。然而,短短几段文字無法記錄所有情況。
今後若我遇到值得記載的問題和解決方法,還會補充。
參考資料
- 軟件:shadowsocksr-cli
- 軟件:Qv2ray
- 説明文檔:Qv2ray实现局域網共享
- 文章:正向代理和反向代理