配置APT代理?

我需要配置代理。 etc/apt/没有apt.conf文件,所以我用nano创建了它。

但我不明白我需要写什么。 我写了http_proxy = http://lgn:pwd@192.168.1.254:8080/那里然后重新启动networking 。 但是当我尝试apt-get update – 它不起作用。

实际上我不明白我应该在apt.conf文件中写入什么端口和ip(有一个带有192.168.1.254 ip和8080端口的例子,所以我决定使用它们)。

要使用代理,您需要一个代理服务器。 IP和端口必须来自此代理服务器。 Login和pwd必须是代理服务器上的用户和密码(如果代理需要登录)。

来自help.ubuntu.com网站 :

APT配置文件方法

此方法使用apt / conf文件,该文件位于/ etc / apt /目录中。 如果您只希望apt-get(而不是其他应用程序)永久使用http代理,则此方法很有用。

在某些安装中,将不会设置apt-conf文件。 使用您选择的编辑器编辑apt-conf文件(如果您还没有,则创建一个新文件)。

 sudo nano /etc/apt/apt.conf 

将此行添加到/etc/apt/apt.conf文件中(将您的详细信息替换为您的appxyaddress和proxyport)。

 Acquire::http::Proxy "http://yourproxyaddress:proxyport"; 

保存apt.conf文件。

如果您的代理需要登录名/密码,请替换:

 "http://yourproxyaddress:proxyport"; 

有:

 "http://username:password@yourproxyaddress:proxyport"; 

使用代理服务器的用户名和密码。

像下面这样的东西应该工作:

 Acquire::http::proxy "http://lgn:pwd@192.168.1.254:8080/"; Acquire::https::proxy "http://lgn:pwd@192.168.1.254:8080/"; 

这是一个更普遍的答案以及apt配置。

由于有很多地方可以配置代理设置,因此在开始时可能会让人感到困惑。 让我总结一些事情并提出一些好的做法。

对于控制台程序

例如:wget,git和几乎所有连接到互联网的控制台应用程序。

如果由于某种原因每次运行命令时都要配置代理,请使用以下命令设置环境变量

 export http_proxy=http://DOMAIN\USERNAME:PASSWORD@SERVER:PORT/ export ftp_proxy=http://DOMAIN\USERNAME:PASSWORD@SERVER:PORT/ 

否则,如果您希望每次为所有用户使用相同的设置,则使用这些设置。

在bashrc中配置

 $ nano /etc/bash.bashrc export http_proxy=http://DOMAIN\USERNAME:PASSWORD@SERVER:PORT/ export ftp_proxy=http://DOMAIN\USERNAME:PASSWORD@SERVER:PORT/ 

/etc/environment配置

 $ nano /etc/environment https_proxy="http://myproxy.server.com:8080/" ftp_proxy="http://myproxy.server.com:8080/" ... 

使用GUI配置

打开网络设置并设置系统范围的网络代理。

网络 – >网络代理 – >配置 – >应用系统范围。

但是,如果您对代理进行身份validation,这可能没有用。

对于apt。

你需要为apt做一些额外的工作,因为偶然的apt不服从环境变量,

 $ nano /etc/apt/apt.conf Acquire::http::Proxy "http://USERNAME:PASSWORD@SERVER:PORT"; Acquire::https::Proxy "https://USERNAME:PASSWORD@SERVER:PORT"; 

对于此范围之外的所有内容,必须有一个选项来在应用程序本身中配置代理设置。 如果不是我很抱歉;)

您可以做的是尝试使用sudo -E运行命令,它将采用环境设置。 当我尝试更新,添加apt-repository和安装时,它似乎对我有用。 例:

 sudo -E add-apt-repository ppa:xxxxx 

根据@David Foerster,这仅适用于使用shell进行手动交互,但它不适用于在没有用户交互的情况下调用Apt的自动化任务和服务。

如果你需要在代理后面使用apt,可能其他一切也需要代理配置。 我喜欢在一个地方管理我的代理设置,这将是环境变量。

为此,我创建了一个/etc/profiles.d/99-proxy.sh ,它包含必要的代理设置(如所描述的那样):

 export http_proxy=http://DOMAIN\USERNAME:PASSWORD@SERVER:PORT/ export https_proxy=$http_proxy export ftps_proxy=$http_proxy 

这样,该计算机上的所有用户都可以访问代理。 (别忘了chmod a+x

当您使用apt或apt-get作为用户时,该用户可以使用sudo。 就像Frank Qiu所描述的那样,sudo没有传递环境变量。 为此你可以添加

 Defaults env_keep += "http_proxy https_proxy ftp_proxy" 

到(例如)

 /etc/sudoers.d/00-environment 

或直接进入

 /etc/sudoers 

文件。 这样,您只需在一个地方管理代理设置。

最初的问题可能是错误的方向。 我相信你想在Linux中设置代理服务器?

这与想要使用Linux环境中的现有代理完全不同。

如果您的问题是第一个问题,那么请使用任何第三方服务在Linux中配置代理服务器。 一个例子可能是鱿鱼。

安装squid的简单命令:

 $ sudo apt-get install squid3 

然后编辑配置以允许本地网络(在这种情况下是您自己的计算机)。 $ sudo vi /etc/squid3/squid.conf

添加/编辑以下行:

 http_access allow local_net acl local_net src 192.168.1.0/255.255.255.0 

假设您的Linux机器的IP是192.168.1 / 24块。