通过设置当前用户的环境变量(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
为我们需要保留的环境变量名称。
注意: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";
发表回复