OS X Mavericks: рубигемы сломаны (после некоторых ошибок доморощенного и rvm?)
(Огромный нюанс:. Я очень умный разработчик и полностью осведомлен в командной строке... но я разработчик IOS mechanicry и взаимодействие между OS X встроенного ruby
, gem
, homebrew
-installed ruby
, и то, что rvm
делает, - это тонкости, которые я только недавно узнал. Тем не менее...)
Я пытаюсь вернуться к базовой операционной системе OS X системы ruby
install. Я не хочу использовать rvm
, я не хочу использовать homebrew
чтобы установить другой ruby
... Я просто хочу, чтобы это работало.
Вот что не работает:
% ○ gem help
WARNING: Unknown command /usr/local/bin. Try gem help commands% ○ gem help commands
WARNING: Unknown command /usr/local/bin. Try gem help commands
В попытке игнорировать весь этот шум и продолжить свой день:
% ○ sudo gem install bundler
ERROR: Could not find a valid gem '/usr/local/bin' (>= 0) in any repository
[time elapses]
Successfully installed bundler-1.7.3
Parsing documentation for bundler-1.7.3
Done installing documentation for bundler after 3 seconds
1 gem installed
Моя конфигурация системы:
- Системный
ruby
:
% ○ where ruby
/usr/bin/ruby% ○ ruby --version
ruby 2.0.0p481 (2014-05-08 revision 45883) [universal.x86_64-darwin13]
- Системный
gem
:
% ○ where gem
/usr/bin/gem% ○ gem --version
2.0.14
Версия OS X:
% ○ sw_vers
ProductName: Mac OS X
ProductVersion: 10.9.5
BuildVersion: 13F34
Предыдущие вещи, которые я сделал, вероятно, мутировали систему: - Установил ruby
через homebrew
. Я с тех пор поддерживал это с помощью brew uninstall ruby
. - Установлен rvm
помощью rvm
. Я с тех пор поддерживал это с помощью rvm implode
и возвращаю соответствующие изменения в мои .zsh*
файлы (которые у меня есть под управлением версиями).
Итак... что здесь происходит? Почему gem
говорит о /usr/local/bin/
?
Som информация о gem
:
% ○ which gem
/usr/bin/gem% ○ type gem
gem is /usr/bin/gem% ○ file /usr/bin/gem
/usr/bin/gem: a /System/Library/Frameworks/Ruby script text executable
% ○ cat /usr/bin/gem
#!/System/Library/Frameworks/Ruby.framework/Versions/2.0/usr/bin/ruby
#--
# Copyright 2006 by Chad Fowler, Rich Kilmer, Jim Weirich and others.
# All rights reserved.
# See LICENSE.txt for permissions.
#++require 'rubygems'
require 'rubygems/gem_runner'
require 'rubygems/exceptions'required_version = Gem::Requirement.new ">= 1.8.7"
unless required_version.satisfied_by? Gem.ruby_version then
abort "Expected Ruby Version #{required_version}, is #{Gem.ruby_version}"
endargs = ARGV.clone
begin
Gem::GemRunner.new.run args
rescue Gem::SystemExitException => e
exit e.exit_code
end
Я нашел это. Прокопайте целую кучу дерьма в gem
, через gem_runner.rb
и command_manager.rb
в command.rb
, где я нашел:
# Adds extra args from ~/.gemrcdef add_extra_args(args)
Что в моем .gemrc
? Ну, во- .dotfiles
, он не отслеживается в моих git-backed .dotfiles
. Два:
% ○ cat ~/.gemrc ---
:bulk_threshold: 1000
:benchmark: false
:sources:
- http://rubygems.org/
- http://gems.github.com
:update_sources: true
gem: /usr/local/bin
:backtrace: false
:verbose: true
Обратите внимание на эту строку: gem: /usr/local/bin
. Это была модификация, которую я сделал, когда я получил ruby
как часть homebrew
.
Теперь это работает так, как ожидалось:
% ○ gem help
RubyGems is a sophisticated package manager for Ruby. This is a
basic help message containing pointers to more information.Usage:
gem -h/--help
gem -v/--version
[snipped]