损坏的 ruby gem 系统
Corrupted ruby gem system
不知何故,我的 ruby 宝石损坏了,当我这样做时
$ sudo gem update
我得到:
ERROR: While executing gem ... (Gem::Exception)
Invalid spec cache file in /home/sawa/.gem/specs/api.rubygems.org%443/specs.4.8
我删除了 .gem
,并重新安装了 Ruby,但问题仍然存在。我该如何修复?
首先,我建议您保存 gem 列表,以防万一:
$ gem list > gems.txt
验证您是否正在使用您认为的 SPEC CACHE:
$ gem env | grep "SPEC CACHE"
- SPEC CACHE DIRECTORY: /home/sawa/.gem/specs
查看您是否有任何过时的来源:
$ gem sources
如果你想小心一点,你可以一个一个删除源,然后重新添加。 (见下面的代码)
尝试 pristine,尽管它可能会失败:
$ gem pristine --all
严厉的做法是删除所有 gem 规范:
rm -rf /home/sawa/.gem/specs
核心做法是删除gem目录,你写的你已经试过了:
rm -rf /home/sawa/.gem
我最好的猜测是您的 gem 来源之一返回了一个不正确的文件,这可能是一个临时问题。您可以通过删除所有 gem 来源来解决这个问题。
$ gem sources --clear-all # clears the cache, but doesn't remove the source
$ gem sources --update # probably will work, in which case you can stop now.
如果清除源不起作用,那么您可以全部删除并重新添加:
$ gem sources
$ gem sources --remove http://gems.rubyforge.org/
$ gem sources --remove http://gems.github.com
...etc ...
$ gem sources --update # should work fine, because there are no sources
$ gem sources --add http://gems.rubyforge.org/
$ gem sources --update
$ gem sources --add http://gems.github.com
$ gem sources --update
...etc...
不知何故,我的 ruby 宝石损坏了,当我这样做时
$ sudo gem update
我得到:
ERROR: While executing gem ... (Gem::Exception)
Invalid spec cache file in /home/sawa/.gem/specs/api.rubygems.org%443/specs.4.8
我删除了 .gem
,并重新安装了 Ruby,但问题仍然存在。我该如何修复?
首先,我建议您保存 gem 列表,以防万一:
$ gem list > gems.txt
验证您是否正在使用您认为的 SPEC CACHE:
$ gem env | grep "SPEC CACHE"
- SPEC CACHE DIRECTORY: /home/sawa/.gem/specs
查看您是否有任何过时的来源:
$ gem sources
如果你想小心一点,你可以一个一个删除源,然后重新添加。 (见下面的代码)
尝试 pristine,尽管它可能会失败:
$ gem pristine --all
严厉的做法是删除所有 gem 规范:
rm -rf /home/sawa/.gem/specs
核心做法是删除gem目录,你写的你已经试过了:
rm -rf /home/sawa/.gem
我最好的猜测是您的 gem 来源之一返回了一个不正确的文件,这可能是一个临时问题。您可以通过删除所有 gem 来源来解决这个问题。
$ gem sources --clear-all # clears the cache, but doesn't remove the source
$ gem sources --update # probably will work, in which case you can stop now.
如果清除源不起作用,那么您可以全部删除并重新添加:
$ gem sources
$ gem sources --remove http://gems.rubyforge.org/
$ gem sources --remove http://gems.github.com
...etc ...
$ gem sources --update # should work fine, because there are no sources
$ gem sources --add http://gems.rubyforge.org/
$ gem sources --update
$ gem sources --add http://gems.github.com
$ gem sources --update
...etc...