问题描述
如何设置apt-get在代理后面工作?
最佳方案
http_proxy="http://host:port" apt-get something
应该管用。
如果您需要身份验证,请尝试
http_proxy="http://user:pass@host:port" apt-get something
如果您希望此设置永久有效,则应该在~/.bashrc
中设置http_proxy(和ftp_proxy?)变量,以便将来所有proxy-capable应用程序都可以使用,例如’wget’。
次佳方案
在/etc/apt/apt.conf中,添加以下行:
Acquire::http::Proxy "http://MYDOMAIN\MYNAME:MYPASS@MY.PROXY.COM:MYPORT"
来自:http://ubuntuforums.org/showthread.php?t=96802
(注意:从this answer完全被盗到了我在SF上的类似问题。已加密到Grizzly)
第三种方案
通过设置http_proxy
,ftp_proxy
和all_proxy
环境变量来指定代理,这些环境变量可以是本地(例如,在~/.bashrc
中)或全局(例如,在/etc/bash.bashrc
中)。几乎所有net-software软件包(例如apt-get,wget,curl等)都遵循这些设置:
# HTTP proxy without authentification
export http_proxy="http://host:port"
# HTTP proxy with authentification
export http_proxy="http://user:pass@host:port"
但是,以这种方式设置它们在运行sudo apt-get ...
时无济于事-这是由于/etc/sudoers
中的这一行:
Defaults env_reset
出于安全原因,此行在使用sudo
时重置所有环境变量。为了在sudo
调用中保留http_proxy
等的值,您可以通过env_keep
指定env_reset
的异常:
# Exception specific to the command apt-get
Defaults!/usr/bin/apt-get env_keep="http_proxy https_proxy ftp_proxy"
# Exception specific to the user joe
Defaults:joe env_keep="http_proxy https_proxy ftp_proxy"
这样,您将获得apt-get
来遵守http_proxy的全局设置,而不是在某些神秘的apt-specific配置文件中复制apt-get
的设置。