为 APT 配置代理?

lap*_*ots 96 apt

我需要配置代理。没有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和8080端口的例子所以我决定使用它们)。

lau*_*ent 129

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

help.ubuntu.com 站点

APT配置文件方法

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

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

sudo nano /etc/apt/apt.conf
Run Code Online (Sandbox Code Playgroud)

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

Acquire::http::Proxy "http://yourproxyaddress:proxyport";
Run Code Online (Sandbox Code Playgroud)

保存 apt.conf 文件。

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

"http://yourproxyaddress:proxyport";
Run Code Online (Sandbox Code Playgroud)

和:

"http://username:password@yourproxyaddress:proxyport";
Run Code Online (Sandbox Code Playgroud)

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

  • 最好在`/etc/apt/apt.conf.d/` 中添加一个单独的本地文件,这样您就不必编辑系统的基本配置文件。这样,如果它们在后续包版本中更新,您就不必手动合并本地更改。 (12认同)

mat*_*eal 38

这是一个更通用的答案以及 apt config。

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

对于控制台程序

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

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

export http_proxy=http://DOMAIN\USERNAME:PASSWORD@SERVER:PORT/
export ftp_proxy=http://DOMAIN\USERNAME:PASSWORD@SERVER:PORT/
Run Code Online (Sandbox Code Playgroud)

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

在 bashrc 中配置

$ nano /etc/bash.bashrc
export http_proxy=http://DOMAIN\USERNAME:PASSWORD@SERVER:PORT/
export ftp_proxy=http://DOMAIN\USERNAME:PASSWORD@SERVER:PORT/
Run Code Online (Sandbox Code Playgroud)

配置 /etc/environment

$ nano /etc/environment
https_proxy="http://myproxy.server.com:8080/" 
ftp_proxy="http://myproxy.server.com:8080/" ...
Run Code Online (Sandbox Code Playgroud)

使用 GUI 配置

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

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

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

对于贴切。

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

$ nano /etc/apt/apt.conf
Acquire::http::Proxy "http://USERNAME:PASSWORD@SERVER:PORT";
Acquire::https::Proxy "https://USERNAME:PASSWORD@SERVER:PORT";
Run Code Online (Sandbox Code Playgroud)

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

  • /etc/environment 中的配置非常重要,因为如果您只是为您的用户设置 http_proxy var,那么当您进入 sudo 模式时(对于诸如“sudo apt-get update”之类的东西),终端通常不会保留当前环境变量;测试您的设置非常重要:sudo echo $http_proxy (4认同)
  • APT需要额外配置proxy的原因是什么?为什么它不服从 /etc/environment? (2认同)

Den*_*ker 23

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

Acquire::http::proxy "http://lgn:pwd@192.168.1.254:8080/";
Acquire::https::proxy "http://lgn:pwd@192.168.1.254:8080/";
Run Code Online (Sandbox Code Playgroud)

  • 然后问你的老师。这不是“为我做功课”的网站。 (7认同)
  • 你甚至知道你在做什么吗?如果您不知道代理的详细信息,您怎么知道您需要使用代理? (5认同)

Fra*_*Qiu 9

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

sudo -E add-apt-repository ppa:xxxxx
Run Code Online (Sandbox Code Playgroud)

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


小智 5

如果您需要在代理后面使用 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
Run Code Online (Sandbox Code Playgroud)

这样,该机器上的所有用户都可以访问代理。(不要忘记chmod a+x

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

Defaults env_keep += "http_proxy https_proxy ftp_proxy"
Run Code Online (Sandbox Code Playgroud)

到(例如)

/etc/sudoers.d/00-environment 
Run Code Online (Sandbox Code Playgroud)

或直接进入

/etc/sudoers
Run Code Online (Sandbox Code Playgroud)

文件。这样您只需在一处管理代理设置。