今天在Ubuntu中执行npm install -g hexo-cli时,死活执行不成功。明明设置了当前用户的代理,哪怕在root和普通用户的环境变量中都设了代理,都不行,

我当前用户的**~/.bashrc**是设置好了代理的:

1
2
3
4
# set proxy
export http_proxy=http://proxy.example.com:8080
export https_proxy=https://proxy.example.com:8080
export no_proxy="localhost,127.0.0.1"

解决方法是通过编辑 /etc/sudoers 文件来确保特定的环境变量在使用 sudo 时被保留。

以下是完整的操作步骤示例:

  1. 为了安全起见,应该使用 visudo 命令来编辑 /etc/sudoers 文件。这是因为 visudo 会在保存文件之前检查语法,防止语法错误导致权限问题。

  2. 在打开的文件中添加或修改以下行:

1
Defaults env_keep += "http_proxy https_proxy no_proxy"
  1. 保存并退出;

    保存文件并退出编辑器。默认情况下,visudo 使用 nano 作为编辑器,你可以按 Ctrl+X 然后按 Y 并回车保存文件并退出。

验证配置

使用 sudo 运行一个命令并检查环境变量是否被保留

1
sudo -E env | grep -E 'http_proxy|https_proxy|no_proxy'

你应该看到输出包含你设置的 http_proxyhttps_proxyno_proxy 的值。

再次执行sudo npm install --unsafe-perm --verbose -g hexo-cli顺利执行,问题解决!