如何在没有sudo权限的情况下安装Ruby gem?

3

配置新机器 (Mac OS Mojave - Version 10.14.2)。

安装 rbenv 后,我正在尝试安装一些 gem 并运行:

gem install rake bundler rspec rubocop pry pry-byebug hub colored octoki

但是它却给了我以下错误:

ERROR:  While executing gem ... (TypeError)
    incompatible marshal file format (can't be read)
    format version 4.8 required; 60.33 given

以下是我的 Gem 环境:

RubyGems Environment:
  - RUBYGEMS VERSION: 2.7.6
  - RUBY VERSION: 2.5.3 (2018-10-18 patchlevel 105) [x86_64-darwin18]
  - INSTALLATION DIRECTORY: /Users/elise/.rbenv/versions/2.5.3/lib/ruby/gems/2.5.0
  - USER INSTALLATION DIRECTORY: /Users/elise/.gem/ruby/2.5.0
  - RUBY EXECUTABLE: /Users/elise/.rbenv/versions/2.5.3/bin/ruby
  - EXECUTABLE DIRECTORY: /Users/elise/.rbenv/versions/2.5.3/bin
  - SPEC CACHE DIRECTORY: /Users/elise/.gem/specs
  - SYSTEM CONFIGURATION DIRECTORY: /Users/elise/.rbenv/versions/2.5.3/etc
  - RUBYGEMS PLATFORMS:
    - ruby
    - x86_64-darwin-18
  - GEM PATHS:
     - /Users/elise/.rbenv/versions/2.5.3/lib/ruby/gems/2.5.0
     - /Users/elise/.gem/ruby/2.5.0
  - GEM CONFIGURATION:
     - :update_sources => true
     - :verbose => true
     - :backtrace => false
     - :bulk_threshold => 1000
     - :sources => ["http://gems.rubyforge.org/", "http://gems.github.com"]
     - :benchmark => false
     - "gem" => "--no-document"
  - REMOTE SOURCES:
     - http://gems.rubyforge.org/
     - http://gems.github.com
  - SHELL PATH:
     - /Users/elise/.rbenv/versions/2.5.3/bin
     - /usr/local/Cellar/rbenv/1.1.1/libexec
     - ./bin
     - ./node_modules/.bin
     - /Users/elise/.rbenv/shims
     - /Users/elise/.rbenv/bin
     - /usr/local/bin
     - /usr/bin
     - /bin
     - /usr/sbin
     - /sbin
     - /usr/local/sbin

有人知道这个bug来自哪里吗? 感谢您的帮助。


1
看看这个是否有帮助。(https://dev59.com/-1QJ5IYBdhLWcg3wAA_z#54787462)。如果有帮助,请告诉我! - Gabriel
你能逐个安装 gem 并分享结果吗? - zeitnot
1
你能确定是哪个 gem 导致了失败吗?octoki 在 rubygems 中不存在,所以可能是拼写错误。 - Jay Dorsey
2
字符60,33代表'<!',意思是其中一个下载失败,你得到了某种HTML或XML文件而不是marshal文件。 - tadman
@JayDorsey 没错,它是“octokit”,我在Stackoverflow上复制粘贴时犯了一个错误。我尝试运行gem install bundlergem install rake,但都没有成功。我改变了gem源,现在它可以正常工作了。谢谢 :) - Elise Serres
2个回答

2
你的gem配置只启用了非常老旧(且未得到维护)的远程gem源。这可能是由于一些旧的迁移配置或遵循一些非常古老和过时的建议所致。
要解决此问题,你需要首先删除过时的gem源,然后添加当前应该使用的唯一一个。为此,你可以从终端运行以下命令:
```bash gem sources --remove gem sources -a https://rubygems.org/ ```
其中 `` 是指过时的gem源的URL地址。
gem sources --remove http://gems.github.com/
gem sources --remove http://gems.rubyforge.org/

gem sources --add https://rubygems.org/

我按照您的指示操作,现在它运行良好!感谢您的帮助! :) - Elise Serres

1

您需要删除所有已有的宝石源并添加https://rubygems.org/。请注意,http://gems.rubyforge.org/http://gems.github.com已经永久失效,应该被删除。您可以通过运行以下命令列出您的源:

gem sources 

你应该获得类似这样的东西:
*** CURRENT SOURCES ***

//gems.rubyforge.org/
//gems.github.com

1)删除所有源代码:

gem sources -r http://gems.rubyforge.org/
gem sources -r http://gems.github.com

2)添加正确的源代码:

gem sources -a https://rubygems.org/

同时,永远不要sudo gem install

希望这可以帮到你!


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接