Поэтому я всегда получаю сообщения об ошибках при установке новых гемов. Я новичок в Ruby, Rails и RubyGems, так что это очень расстраивает. Я не уверен, нужно ли мне что-то настраивать или я что-то неправильно установил ...Надеюсь, вы сможете помочь. Вот несколько примеров проблем, с которыми я сталкиваюсь:
# 1: sudo против использования sudo
В тоннах учебников / документации они всегда используют:
gem install gem-name
Для меня это почти всегда приводит к некоторой ошибке ... пока я не сделаю ...
sudo gem install gem-name
... тогда драгоценный камень обычно устанавливается нормально. Как получается, что люди могут запускать gem install
без запуска с sudo
?
Решение:
Установите Ruby Version Manager!
Шутки в сторону! Я хотел бы сделать это раньше. Ruby Version Manager позволяет запускать несколько версий Ruby, каждая из которых имеет свой собственный набор гемов, и переключаться между различными версиями, по-видимому, просто. Кроме того, вам больше не придется использовать sudo
. Кроме того, его очень легко установить, так что вы должны это сделать!
# 2: «Не могу найти заголовочные файлы»
Иногда я получаю сообщение, подобное этому, даже когда работает под sudo
...
/System/Library/Frameworks/Ruby.framework/Versions/1.8/usr/bin/ruby extconf.rb
mkmf.rb can't find header files for ruby at /System/Library/Frameworks/Ruby.framework/Versions/1.8/usr/lib/ruby/ruby.h
Что это хотя бы значит?
Решение:
Проблема в том, что он не может найти команду make. Он устанавливается автоматически при установке XCode. И по какой-то причине, хотя у меня был установлен XCode, он не смог его найти. Я скачал последнюю версию XCode и переустановил. Теперь, когда я запускаю, which make
это правильно, возвращает /usr/bin/make
.
Используя Lion с новой версией XCode, загрузите «Инструменты командной строки для XCode» с https://developer.apple.com/downloads.
№ 3: «Небезопасный мир, доступный для записи»
Вот новый.
/Library/Ruby/Gems/1.8/gems/bundler-0.9.26/lib/bundler/source.rb:352: warning: Insecure world writable dir /usr/local/bin in PATH, mode 040777
Это не выглядит хорошо. Что мне нужно сделать, чтобы это исправить?
Решение:
Что-то, что я установил, в какой-то момент времени изменило разрешения для моего каталога /usr/local/bin
(а также моих каталогов /usr/local
и /usr/local/mysql
). Чтобы изменить их обратно:
sudo chmod 755 /usr/local/bin
# 4: Не могу установить bcrypt-ruby
Наконец, я пытаюсь запустить пакетную bundle install
в моем новом приложении Rails 3.0.0.beta4 и получаю следующую ошибку:
Installing bcrypt-ruby (2.1.2) from .gem files at /Users/andrew/.bundle/ruby/1.8/cache with native extensions /Library/Ruby/Site/1.8/rubygems/installer.rb:483:in `build_extensions': ERROR: Failed to build gem native extension. (Gem::Installer::ExtensionBuildError)
/System/Library/Frameworks/Ruby.framework/Versions/1.8/usr/bin/ruby extconf.rb
mkmf.rb can't find header files for ruby at /System/Library/Frameworks/Ruby.framework/Versions/1.8/usr/lib/ruby/ruby.h
Gem files will remain installed in /Users/andrew/.bundle/ruby/1.8/gems/bcrypt-ruby-2.1.2 for inspection.
Results logged to /Users/andrew/.bundle/ruby/1.8/gems/bcrypt-ruby-2.1.2/ext/mri/gem_make.out
from /Library/Ruby/Site/1.8/rubygems/installer.rb:446:in `each'
from /Library/Ruby/Site/1.8/rubygems/installer.rb:446:in `build_extensions'
from /Library/Ruby/Site/1.8/rubygems/installer.rb:198:in `install'
from /Library/Ruby/Gems/1.8/gems/bundler-0.9.26/lib/bundler/source.rb:170:in `install'
from /Library/Ruby/Gems/1.8/gems/bundler-0.9.26/lib/bundler/installer.rb:34:in `run'
from /Library/Ruby/Gems/1.8/gems/bundler-0.9.26/lib/bundler/spec_set.rb:12:in `each'
from /Library/Ruby/Gems/1.8/gems/bundler-0.9.26/lib/bundler/spec_set.rb:12:in `each'
from /Library/Ruby/Gems/1.8/gems/bundler-0.9.26/lib/bundler/installer.rb:21:in `run'
from /Library/Ruby/Gems/1.8/gems/bundler-0.9.26/lib/bundler/installer.rb:6:in `install'
from /Library/Ruby/Gems/1.8/gems/bundler-0.9.26/lib/bundler/cli.rb:91:in `install'
from /Library/Ruby/Gems/1.8/gems/bundler-0.9.26/lib/bundler/vendor/thor/task.rb:33:in `send'
from /Library/Ruby/Gems/1.8/gems/bundler-0.9.26/lib/bundler/vendor/thor/task.rb:33:in `run'
from /Library/Ruby/Gems/1.8/gems/bundler-0.9.26/lib/bundler/vendor/thor/invocation.rb:109:in `invoke'
from /Library/Ruby/Gems/1.8/gems/bundler-0.9.26/lib/bundler/vendor/thor/invocation.rb:116:in `call'
from /Library/Ruby/Gems/1.8/gems/bundler-0.9.26/lib/bundler/vendor/thor/invocation.rb:116:in `invoke'
from /Library/Ruby/Gems/1.8/gems/bundler-0.9.26/lib/bundler/vendor/thor.rb:137:in `start'
from /Library/Ruby/Gems/1.8/gems/bundler-0.9.26/lib/bundler/vendor/thor/base.rb:378:in `start'
from /Library/Ruby/Gems/1.8/gems/bundler-0.9.26/lib/bundler/vendor/thor.rb:124:in `start'
from /Library/Ruby/Gems/1.8/gems/bundler-0.9.26/bin/bundle:13
from /usr/bin/bundle:19:in `load'
from /usr/bin/bundle:19
Похоже, что bcrypt-ruby
- это своего рода зависимость, которую он пытается установить. Так как мне заставить это работать? Как я могу узнать причину, по которой он терпит неудачу?
Решение:
Это было исправлено переустановкой XCode.
Извините за список белья, но я очень хочу избавиться от всех этих проблем!
Заранее спасибо!