Ubuntu 12.04 LTS apt-get connect refuse Unable to connect to 127.0.0.1:8888:

想要用apt-get install openssh-server 下载软件时,下载失败,提示:

Unable to connect to 127.0.0.1:8888:
Connect Refuse(111)

一开始以为是软件源失效,更新软件源(软件源列表位于/etc/apt/sources.list)
问题没有解决,最终排查发现该问题的产生是由于设置了apt-get 的代理,可通过修改代理设置恢复。

Ubuntu下在9.10以前使用“http_proxy”环境变量就可以令apt-get使用代理了
具体如下:

export http_proxy=http://127.0.0.1:8888
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:8888/“;
Acquire::ftp::proxy “ftp://127.0.0.1:8888/“;
Acquire::https::proxy “https://127.0.0.1:8888/“;

很明显的代理设置代码,我看了下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:8888/” update

你可能感兴趣的:(Linux)