CRYZ

APT包管理工具设置代理

通过设置当前用户的环境变量(Environment Variables)的方式来让终端(Terminal)或命令行(Command Line)使用代理,使用sudo apt ...命令进行更新的时候代理不会生效。

我们可以通过重新设置环境变量,或者为APT单独配置代理解决此问题。

方法一:解决代理环境变量不生效

一般情况下我们使用apt update/upgrade的时候,都会配合sudo使用。

但是当使用sudo命令时,当前shell中所设置的大部分环境变量会因安全原因被排除,用于设置代理的环境变量也不例外,因此导致代理无效。

我们可以通过sudo -E保留当前的环境变量,因此可以使用以下命令保留当前的环境变量执行apt update

sudo -E apt update

使用--preserve-env选项

-E选项会默认保留sudoers配置中所允许的所有环境变量,如果只想保留指定的环境变量而不是全部,可以使用--preserve-env=list选项指定需要保留的环境变量:

sudo --preserve-env=http_proxy,socks_proxy apt update

修改sudoers配置

某些情况下使用sudo -E, --preserve-env也无法使代理环境变量生效,这是因为sudo所保留的环境变量受到sudoers配置文件的限制,可以往sudoers配置中添加env_key配置项,保留自己需要的环境变量:

Defaults env_keep += "http_proxy"

其中http_proxy为我们需要保留的环境变量名称。

How To Edit the Sudoers File

注意:sudoers配置文件建议我们在/etc/sudoers.d目录下创建新文件放置我们的配置内容,而不是直接修改/etc/sudoers文件。

方法二:为APT单独设置代理

除了设置环境变量的方式,我们还可以使用APT的acquire::http::proxy配置项单独为APT配置代理。

临时配置

临时使用的情况下,可以在使用apt时带上 -o选项临时设置代理配置:

sudo apt -o acquire::http::proxy="http://yourproxyaddress:proxyport" update

长久配置

如果想要代理一直生效,那么需要往/etc/apt/apt.conf.d目录中添加新的配置文件,配置文件的内容为:

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

评论

发表回复

您的电子邮箱地址不会被公开。 必填项已用 * 标注