花式优化加速apt-get/pip/wget下载速度
本文由tonovate原创,禁止转载。保留一切法律权利。
在国内用Ubuntu/python,有时候下载一些包的速度比较慢。慢的结果是一致的,原因各有不同,但是最深处的原因还是外网带宽低导致下载速度只有数kb甚至停顿。本文从简单到复杂,分类总结笔者认为有效的apt-get/pip/wget下载速度的优化方案。
第一式 更改源。
进入设置-软件和更新
,根据地理位置选择最佳的镜像(比如我选的是aliyun或者99cn的镜像)。
优点:可以优化大部分可以在apt-get下载的包。
缺点:对pip无效;对wget无效;对只能从launchpad的ppa源获取的包无效(如最新的nvidia驱动)。
第二式 Shadowsocks-qt与Proxychains4(For Ubuntu)组合拳
在此不详细讨论以上两款软件的安装方法。Shadowsocks-qt只能对浏览器进行代理,终端的代理就要交给Proxychains4了。
介绍一个招数,不用每次执行一个命令都得在前面输入proxychains4:
proxychains4 -q /bin/bash
该命令仅对当前终端窗口有效。若想默认对所有bash生效,可以把该语句加入到.bashrc
内。
之后可以试试curl
一下ip.cn
(注:Proxychains4对ping
命令无效),看看是否成功在终端走了代理。
优点:对pip、wget有显著效果。
缺点:对只能从launchpad的ppa源获取的包无效。
注意:如果换用了国内的源,如果使用了前面的招数,apt-get时请退出proxychains4。
For Mac:mac在安装了shadowsocks的条件下,可以直接通过设置bash达到终端走代理的目的,加速homebrew。
方法:在~/.bashrc
下(如果没有可自行创建)添加如下语句:
alias setproxy="export ALL_PROXY=socks5://(socks5服务器的ip,一般为127.0.0.1,外边括号不要):(端口号,一般为1086或1087,外边括号不要)"
alias unsetproxy="unset ALL_PROXY"
之后就可以在终端下使用setproxy开启代理,使用unsetproxy关闭代理。
第三式 Shadowsocks-qt与tsocks组合拳
Ubuntu上,有的包只能通过launchpad的ppa源获取,下载速度仅数kb,甚至屡次停顿,令人抓狂。
究其原因,有的包不在国内的镜像站提供(如最新的nvidia显卡驱动),因此第一招不能用。而apt-get走的是http协议,因此第二招也不管用。
在此,我们可以使用tsocks。在此不赘述它的安装方法。在apt-get只能通过launchpad的ppa源下载的包时,在sudo和apt-get之间加上tsocks命令即可。
优点:对只能从launchpad的ppa源获取的包有效。
缺点:可移植性差;不适用于安装显卡驱动这种需要停止图形界面,从而停止了Shadowsocks-qt的情况。
第四式 离线下载与本地ppa源
在此介绍一下背景:笔者在之前安装显卡驱动的时候,发现国内服务器只提供到nvidia-375.66
,然而因为笔者笔记本的GPU是今年新款,笔者安装375.66驱动以后因为该驱动的bug,所以只能跑出五分之一的显卡效能。之后笔者在nvidia论坛看到帖子,说该bug已经在384.98驱动中修复。于是笔者兴高采烈地在官网下载了.run驱动。然而.run文件令人崩溃,永远会把电脑搞坏,或者循环启动,无解。于是笔者想到利用apt-get安装。然而最新的nvidia-384.98
只在ppa:graphics-drivers
提供,下载速度奇慢,难以接受。因此笔者想用前面的第三式来解决,然而关闭xserver图形界面后,shadowsocks也断了,这一招也用不成。因此笔者只能曲线救国,离线安装,为大家祭出第四式。
该方法同时适用于给未联网或者无法使用前三招加速的Ubuntu主机高速安装软件的目的。请首先阅读第三式,并安装shadowsocks-qt与tsocks。
第一步 添加目的ppa源。如我要安装显卡驱动,我就运行:
sudo add-apt-repository ppa:graphics-drivers/ppa
sudo tsocks apt-get update
第二步 下载对应安装包(.deb)到终端当前所在目录(Working Directory)。如我要下载nvidia-384.98:
sudo tsocks apt-get download nvidia-384
第三步 在设置-软件和更新
中,取消勾选ppa:graphics-drivers/ppa
源
第四步 将刚才下载好的所有deb包复制到待安装主机的某个文件夹下,如/var/debs
。
- 注意:请将deb包的名字改成好拼好记的名字,之后
apt-get install
会用到。
第五步 生成包索引文件
cd /var
sudo touch debs/Packages.gz
sudo chmod -R 777 debs/
sudo dpkg-scanpackages debs /dev/null | gzip > debs/Packages.gz
第六步 在/etc/apt/sources.list
中添加本地目录。
sudo gedit /etc/apt/sources.list
在该文件中添加:
deb file:/var debs/
第七步 索引更新。
sudo apt-get update
第八步 安装。
sudo apt-get install (deb包名,外面括号去掉)