先区分源地址与下载路径
包管理器可能从索引、源码仓库、镜像和二进制分发站分别取数据。浏览器成功不能证明终端已继承代理,更新索引成功也不能证明每个包的文件主机都可达。记录工具版本、失败 URL 的域名和错误阶段,先不要更换全部软件源。
| 工具与场景 | 配置边界 |
|---|---|
| Homebrew | 按官方支持使用 http_proxy、https_proxy 等变量 |
| APT 经 sudo 运行 | 提权后的环境可能与当前终端不同 |
| WSL 或容器内包管理器 | 127.0.0.1 指向当前环境,并非自动指向宿主 |
| 公司内部软件源 | 保留组织要求的地址、认证和直连范围 |
Homebrew:先对单次下载传入变量
http_proxy=http://127.0.0.1:7890 https_proxy=http://127.0.0.1:7890 brew fetch --retry jq该命令下载 jq 对应的安装材料而不安装;仍会消耗流量,并可能按 Homebrew 当前配置进行元数据更新。端口按实际 HTTP 代理填写。缓存命中时并不能证明发生了新网络请求,应结合命令输出判断,随后对原先失败的下载做验证。
Homebrew 使用 curl、Git 等下载工具,不同请求可能有不同目标。还应检查 no_proxy 是否把目标排除了,以及旧的镜像、下载域名或 Git 配置是否改变了路径。不要为了测试清空全部缓存或修改所有 tap。
APT:显式传给命令,不依赖 sudo 保留终端变量
sudo apt-get -o Acquire::http::Proxy="http://127.0.0.1:7890/" -o Acquire::https::Proxy="http://127.0.0.1:7890/" update这会更新本机软件包索引,需要管理员权限;并非纯查看命令。先确认本机代理正在运行、提权后的进程仍可到达该入口。HTTPS 目标通过 HTTP 代理建立隧道时,代理地址仍可写 http://;不要因此把软件源 URL 从 HTTPS 改成 HTTP。
若提示签名不受信任、Release 文件不匹配或仓库不支持当前发行版,这不是“代理速度慢”。按该发行版和仓库的官方说明检查源配置与密钥,不添加 trusted=yes,也不关闭包签名校验。
单次成功后,才考虑持久设置
- Homebrew 如需长期使用,可在你实际使用的 shell 或受控启动方式里设置变量,但先记录原值;图形终端、IDE 和远程会话可能读取不同文件。
- APT 如需长期使用,先检查 /etc/apt/apt.conf 和 /etc/apt/apt.conf.d 中是否已有代理项,再由管理员新增独立文件,避免覆盖既有配置。
- 某个内网源需要绕过代理时,APT 支持按主机设为 DIRECT;只对确定的内部目标配置,别把整个公网范围排除。
不要通过 sudo -E 无差别保留整个用户环境来处理每一次失败。代理若含认证信息,应使用工具或组织支持的受控凭据方式,避免将密码写进终端历史、公共仓库或可被其他用户读取的配置。
验收与恢复
在原失败的仓库或包上确认下载完成,再在不开临时参数的新终端里检查日常行为。一次性变量和 -o 参数不会写入持久配置;如果另行添加过文件或启动项,按原记录撤销。保留原软件源与签名策略,不通过删掉系统源列表来回退代理。