Ruby 2.1.5中gem install指定-s源无效,如何替换安装源?
问题分析与解决
-s参数无效的原因
Ruby 2.1.5对应的RubyGems版本(通常为2.2.x系列)对-s/--source参数的要求是指定完整的gem仓库根地址,而非直接指向依赖查询的API端点。你传入的https://rubygems.org/api/v1/dependencies是具体的API路径,不符合旧版RubyGems的源格式要求。旧版RubyGems会自动将这种非标准源地址转换为它默认的API域名格式(即https://api.rubygems.org/api/v1/dependencies),从而触发404错误。
替代解决方案
1. 修改全局gem源(推荐)
先替换默认源为正确的根地址,再执行安装:
# 移除旧的api源(如果存在) gem sources --remove https://api.rubygems.org/ # 添加正确的根源 gem sources --add https://rubygems.org/ # 安装指定版本的bundler gem install bundler -v '~>1.14' -V
此时旧版RubyGems会基于https://rubygems.org/自动构造正确的依赖API路径https://rubygems.org/api/v1/dependencies,而非错误的api.rubygems.org地址。
2. 临时指定根源地址(不修改全局设置)
直接通过-s参数传入gem仓库根地址,而非API路径:
gem install bundler -s https://rubygems.org/ -v '~>1.14' -V
3. 通过环境变量临时指定源
使用GEM_SOURCE环境变量覆盖默认源:
GEM_SOURCE=https://rubygems.org/ gem install bundler -v '~>1.14' -V
内容的提问来源于stack exchange,提问作者neilH
相关产品推荐
相关产品推荐

