升级到 Ubuntu10.04 后,发现 apt-get 的代理设置有改变了,在 9.10 以前使用 http_proxy
环境变量就可以令 apt-get 使用代理了
export http_proxy=http://127.0.0.1:8000
sudo apt-get update
然后在 Ubuntu10.04 下就无效了,看来 apt-get 已经被改成不使用这个环境变量了。
一阵郁闷后,最后我发现在 首选项 –> 网络代理 那里,多了个「System-wide」按钮(我用的是英文环境,不知道中文被翻译成怎样,关闭窗口时也会提示你),在这里设置后,apt-get 确实可以使用代理了。
但是我依然鄙视这种改进,因为我通常就是偶尔使用代理,更新几个被墙掉的仓库而已(如 Dropbox 和 Tor),根本不想使用全局代理,本来用终端就能搞定的事,现在切换代理要点 n 次鼠标,真烦。
所以我研究了一下,发现那个代理设置修改了两个文件,一个是 /etc/environment,这个是系统的环境变量,里面定义了 http_proxy
等代理环境变量。另一个是 /etc/apt/apt.conf,这个就是 apt 的配置,内容如下
Acquire::http::proxy "http://127.0.0.1:8000/";
Acquire::ftp::proxy "ftp://127.0.0.1:8000/";
Acquire::https::proxy "https://127.0.0.1:8000/";
很明显的代理设置代码,我看了下 apt-get 的手册,发现可以用 -c
选项来指定使用配置文件,也就是复制一份为 ~/apt_proxy.conf,然后「网络代理」那里重置回直接连接,以后使用
sudo apt-get -c ~/apt_proxy.conf update
就可以使用代理了,apt-get 也有一个 -o
选项,直接跟 apt-get 的设置变量,就不用指定配置文件了,比如
sudo apt-get -o Acquire::http::proxy="http://127.0.0.1:8000/" update