当前位置: 首页>>技术教程>>正文


apt-get位于VirtualBox Ubuntu上的代理后面

, ,

问题描述

如何设置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_proxyftp_proxyall_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的设置。

参考资料

本文由Ubuntu问答整理, 博文地址: https://ubuntuqa.com/article/10806.html,未经允许,请勿转载。