为APT配置代理?


72

我需要配置代理。没有apt.conf文件,etc/apt/因此我使用创建了文件nano

但是我不明白我需要在那里写什么。我已经在http_proxy = http://lgn:pwd@192.168.1.254:8080/那儿写了 ,然后重新开始networking。但是,当我尝试apt-get update-不起作用时。

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


代理设置发生了变化,可以在ubuntu中使用公司代理工作,请访问github.com/navinas33/docker_ubuntu.git,它起作用了……
纳文于

Answers:


103

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

help.ubuntu.com网站

APT配置文件方法

此方法使用在/ etc / apt /目录中找到的apt.conf文件。如果只希望apt-get(而不是其他应用程序)永久使用http-proxy,则此方法很有用。

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

sudo nano /etc/apt/apt.conf

将此行添加到您的/etc/apt/apt.conf文件中(用您的代理地址和proxyport替换您的详细信息)。

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

保存apt.conf文件。

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

"http://yourproxyaddress:proxyport";

与:

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

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


6
/etc/apt/apt.conf.d/最好在其中添加一个单独的本地文件,这样您就不必编辑系统的基本配置文件。这样,如果在后续的软件包版本中对其进行了更新,则无需手动合并本地更改。
三胞胎

用户目录上是否有一个代理配置文件?
becko '17

该答案需要更新:gksudo已过时。考虑使用其他非GUI编辑器,或者sudo -H如果使用gedit或类似工具,则建议使用gksudo。

24

这是与apt config一起提供的更通用的答案。

由于配置代理设置的地方很多,一开始可能会造成混乱。让我总结一些事情并提出一些好的做法。

对于控制台程序

例如:wget,git和几乎每个连接到Internet的控制台应用程序。

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

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配置

打开网络设置,然后设置系统范围的网络代理。

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

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

对于适当的。

您需要为apt做一些额外的工作,因为apt不会遵守环境变量,

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

对于超出此范围的所有内容,必须有一个选项可以在应用程序本身中配置代理设置。如果没有,我很抱歉;)


2
/ etc / environment中的配置非常重要,因为如果您只是为用户设置http_proxy var,则在进入sudo模式时(例如“ sudo apt-get update”之类的东西),终端通常不会保留当前环境vars; 测试设置非常重要:sudo echo $ http_proxy
belun

HTTP_PROXY(大写)似乎是该变量的标准名称,尽管许多程序会退回到小写版本。https_proxy(请注意小写)是正确的大写形式,但您永远不会像/etc/environment上面一样单独使用它。(我认为这s是一个错字。)
Curt J. Sampson

APT需要额外配置代理的原因是什么?为什么不只遵循/ etc / environment?
洛雷诺

22

类似于以下内容的东西应该起作用:

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

使用哪个端口和ip有区别吗?
lapots

好,是的,您当然需要为要使用的代理输入正确的详细信息。
丹尼斯·考斯玛克

er ... ip-它是路由器的ip?我的意思是我从示例中使用了此ip,但我在浏览器中使用192.168.1.1ip 配置了所有路由器的设置。我应该使用.1吗?和登录名和密码应该是ubuntu的根或路由器的?
lapots

2
你甚至不知道自己在做什么?如果不知道代理的详细信息,您怎么知道需要使用代理?
丹尼斯·考斯玛克

5
然后问你的老师。这不是“为我做功课”网站。
丹尼斯·考斯玛克

5

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

sudo -E add-apt-repository ppa:xxxxx

根据@David Foerster的说法,这仅适用于使用shell进行手动交互,但是如果没有用户交互,它将无法用于调用Apt的自动化任务和服务。


但是,如果没有用户交互,调用Apt的自动化任务和服务将无济于事。
David Foerster

感谢您的通知,我将在评论中添加您的评论。
Frank Qiu

2

如果您需要在代理后面使用apt,则可能其他所有内容也都需要代理配置。我想在一个地方管理代理设置,这就是环境变量。

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

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

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


0

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

嗯,这与希望使用Linux环境中的现有代理完全不同。

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

安装鱿鱼的简单命令:

$ 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块中。


大概这个问题的大多数读者已经安装了squid;),还设置了http[s]_proxyENV变量,现在想知道为什么APT仍然不起作用。但是,如果要从除机器以外的所有内容中获取HTTP 403,squid请再次查找所有deny未注释的单词。(尤其是http_access在同一条线上。
托马斯Gandor
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.