这个是个很好的问题,归根结底是因为 yay 作为 AUR 助手和包构建工具,是运行在用户空间的 Bash 脚本工具,它默认就继承了当前终端的环境变量(包括 HTTP 代理),而不像 dnfyum 这些系统级工具那样绕过环境变量。


✅ 简单对比:yay vs dnf/yum

工具 默认是否继承终端代理变量(如 HTTP_PROXY 是否系统级服务 是否需要配置代理
yay ✅ 是的,继承环境变量 ❌ 否(用户空间工具) 不需要额外配置
makepkg ✅ 是的 ❌ 否 不需要额外配置
dnf / yum ❌ 默认不会继承环境变量 ✅ 是 需要显式配置 proxy=
apt ❌ 默认不会自动继承 ✅ 是 需要配置 /etc/apt/apt.conf
curl(终端) ✅ 继承(除非用 sudo ❌ 否 环境变量即可

🧠 原因总结

  • yay 是用户空间工具,它内部调用的是 curl, git, makepkg, 等,全部都会继承你当前 shell 的环境变量。
  • dnf 是系统级包管理器,它不安全地信任用户环境变量可能会有风险(例如被非特权用户恶意设置),所以默认忽略终端变量,必须在配置文件中显式设置代理。

✅ 你可以用 yay 下载 VSCode 吗?

实际上,在 Arch 系下,你完全不需要通过 .rpm 装 VSCode。直接用 yay 安装如下版本即可:

  • 微软官方打包的版本(带官方签名):

    yay -S visual-studio-code-bin
    
  • 开源社区打包的版本(移除了微软遥测):

    yay -S code-oss
    

✅ 如果你确实要在 RHEL/CentOS 上解决代理问题

你只要加一行配置到 /etc/dnf/dnf.conf 中即可:

proxy=http://127.0.0.1:7897

或者临时使用:

sudo dnf --setopt=proxy=http://127.0.0.1:7897 install code