Как мне заставить `gem` снова работать после обновления до rubygems 1.8.x? - PullRequest
5 голосов
/ 09 мая 2011

Тааак, я обновился до RubyGems 1.8.1 с 1.7.2, используя gem upgrade --system, затем сразу же запустил gem pristine --all --no-extensions, как рекомендовано в блоге Эрика Ходеля . После получения ошибок при выполнении команд gem я немного погуглил, нашел несколько предложений по gem uninstall драгоценным камням с предупреждениями об устаревании, но потом понял, что не могу, так как gem uninstall просто выдает ошибки - как и любой другая команда - включая просто старый gem.

Когда я запускаю любую из этих команд, я получаю кучу «устаревших» предупреждений, а затем этот обратный след:

/Users/sloveless/.rvm/rubies/ruby-1.9.2-p180/lib/ruby/site_ruby/1.9.1/rubygems/specification.rb:277:in `block in _resort!': undefined method `name' for nil:NilClass (NoMethodError)
from /Users/sloveless/.rvm/rubies/ruby-1.9.2-p180/lib/ruby/site_ruby/1.9.1/rubygems/specification.rb:276:in `sort!'
from /Users/sloveless/.rvm/rubies/ruby-1.9.2-p180/lib/ruby/site_ruby/1.9.1/rubygems/specification.rb:276:in `_resort!'
from /Users/sloveless/.rvm/rubies/ruby-1.9.2-p180/lib/ruby/site_ruby/1.9.1/rubygems/specification.rb:270:in `_all'
from /Users/sloveless/.rvm/rubies/ruby-1.9.2-p180/lib/ruby/site_ruby/1.9.1/rubygems/specification.rb:402:in `each'
from /Users/sloveless/.rvm/rubies/ruby-1.9.2-p180/lib/ruby/site_ruby/1.9.1/rubygems.rb:477:in `map'
from /Users/sloveless/.rvm/rubies/ruby-1.9.2-p180/lib/ruby/site_ruby/1.9.1/rubygems.rb:477:in `find_files'
from /Users/sloveless/.rvm/rubies/ruby-1.9.2-p180/lib/ruby/site_ruby/1.9.1/rubygems.rb:1061:in `load_plugins'
from /Users/sloveless/.rvm/rubies/ruby-1.9.2-p180/lib/ruby/site_ruby/1.9.1/rubygems/gem_runner.rb:85:in `<top (required)>'
from /Users/sloveless/.rvm/rubies/ruby-1.9.2-p180/lib/ruby/site_ruby/1.9.1/rubygems/custom_require.rb:36:in `require'
from /Users/sloveless/.rvm/rubies/ruby-1.9.2-p180/lib/ruby/site_ruby/1.9.1/rubygems/custom_require.rb:36:in `require'
from /Users/sloveless/.rvm/rubies/ruby-1.9.2-p180/bin/gem:9:in `<main>'

То же самое произошло, когда я попробовал это снова, но обновил RubyGems 1.6.2, используя ту же команду обновления. Я попробовал в третий раз, но вместо этого использовал приведенное ниже предложение, чтобы сделать gem install rubygems-update && update_rubygems - это просто привело к неудачной установке и оставило меня с пригодным для использования RubyGems 1.6.2.

Я бы хотел: а) использовать RubyGems 1.8.x и б) отменить эти изменения, вместо того, чтобы отменить мою установку 1.9.2 снова . Есть идеи? Я бегу:

  • рвм 1.6.5
  • МРТ 1.9.2
RubyGems Environment:
  - RUBYGEMS VERSION: 1.6.2
  - RUBY VERSION: 1.9.2 (2011-02-18 patchlevel 180) [x86_64-darwin10.7.0]
  - INSTALLATION DIRECTORY: /Users/sloveless/.rvm/gems/ruby-1.9.2-p180
  - RUBY EXECUTABLE: /Users/sloveless/.rvm/rubies/ruby-1.9.2-p180/bin/ruby
  - EXECUTABLE DIRECTORY: /Users/sloveless/.rvm/gems/ruby-1.9.2-p180/bin
  - RUBYGEMS PLATFORMS:
    - ruby
    - x86_64-darwin-10
  - GEM PATHS:
     - /Users/sloveless/.rvm/gems/ruby-1.9.2-p180
     - /Users/sloveless/.rvm/gems/ruby-1.9.2-p180@global
  - GEM CONFIGURATION:
     - :update_sources => true
     - :verbose => true
     - :benchmark => false
     - :backtrace => false
     - :bulk_threshold => 1000
     - :sources => ["http://rubygems.org"]
  - REMOTE SOURCES:
     - http://rubygems.org

FWIW, похожая ошибка была зарегистрирована в репозитории RubyGems только сегодня (10 мая), и я добавил к этому аналогичную информацию, здесь

Ответы [ 3 ]

5 голосов
/ 09 мая 2011

Была эта проблема с драгоценными камнями 1. {7..8}. *.

Вот наш производственный стек:

  • MRI 1.9.2 и JRuby 1.6.1
  • RVM 1.6.5
  • Драгоценные камни 1.6.2

Держись подальше от улучшения самих камней, иначе дерьмо может сломаться.Я знаю, как заманчиво использовать кровоточащий край, но это больше похоже на обильное кровоизлияние по всем стенам операционной.

Если вам необходимо:

  • Только для текущего пользователя (чаще):gem install rubygems-update -v 1.6.2 && update_rubygems
  • в масштабе всей системы (предупреждение): sudo gem install rubygems-update -v 1.6.2 && sudo update_rubygems

При использовании RVM сначала обязательно rvm gemset global.

Применяются такие обычные предупреждениякак резервное копирование ваших данных, наборов гемов, приложений и не пробуйте это в работе.:)

0 голосов
/ 12 мая 2011

Хорошо ... Я столкнулся с той же ошибкой, что и вы, после обновления rubygems и выполнения gem pristine --all --no-extensions.Я, с другой стороны, не понимал основную нет-нет в установке и обновлении моего гема с помощью sudo, поэтому у меня есть целый другой беспорядок, который нужно устранить.Тем не менее, вот как я вернулся к работающей установке:

Я обновил rvm, выполнив новую установку: http://beginrescueend.com/rvm/install/

Я столкнулся с некоторыми другими проблемами с разрешениями на этом шаге из-за моего отказа-не судьба пути, но прошел мимо.Мне пришлось открыть новый сеанс терминала, чтобы изменения работали.

Затем $ rvm rubygems current, как описано здесь: http://beginrescueend.com/rubies/rubygems/

Это установленная версия 1.6.2.Пока что у меня, похоже, снова есть рабочая команда gem, и мои предупреждения об устаревании исчезли.Надеюсь, это поможет.

0 голосов
/ 09 мая 2011

Это не связано с RVM, так как я использую ту же версию.Это также не Ruby 1.9.2, опять же, потому что я использую ту же версию.

gem uninstall ... возвращать ошибки не нормально.Я выполнил обновление на нескольких машинах, работающих под управлением RVM и 1.9.2, и сам гем продолжал работать правильно.И да, я видел устаревшие предупреждения.

Возможно, вы запускали gem update, используя sudo?Это, вероятно, сломало бы это, так как вы работаете под RVM, а sudo является основным нет-нет.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...