Bundler 的代理下载可用,但一个 Git 依赖失败
Gem 下载与基于 Git 的依赖可能使用不同的网络客户端和传输方式。在更改 Bundler 可用的代理路由之前,先确认 Git URL。
如果 bundle install 下载了 gem,随后在一个 Git 依赖处停下,就检查该依赖的来源。下载成功只能证明那些下载所用的路由。
- 阅读 Gemfile 或 lockfile 中实际的 Git URL。 HTTPS、SSH 和
git://需要不同的连接。历史上的 Bundler 简写可能在一个简短声明中隐藏git://URL。 - 检查构建所使用的 Git 调用。 将其实际配置、环境和账号与一个可用的终端调用进行比较。构建代理或特权命令可能看到不同的输入。
- 遵循所选的传输方式。 对于已获授权的 HTTPS 源,原生 Git 的受支持的 HTTP 代理配置可以适用。对于 SSH,使用组织支持的 SSH 路由。HTTP 代理设置并不能配置 Bundler 可能启动的每一种传输方式。
对于允许公共中间人的公共 HTTPS Git 源,HTTP 代理列表为该 Git 配置提供候选端点。
现在对错误进行分类。407 涉及对中间人的访问。隧道成功之后私有仓库的权限错误涉及它单独的账号或密钥。不要把代理凭据写入 Gemfile 和已提交的源 URL;这些声明会与网络设置可能不同的项目用户共享。
不要仅仅因为一个不相关的变通方案建议,就替换可用的代理或修改带域名的账号。完成意味着通过预期路由获取那个特定的 Git 源。重复已经成功的 gem 下载会让该失败得不到检验。