Ruby RubyGems: почему я всегда получаю сообщения об ошибках при попытке установить гемы?
Поэтому я всегда, кажется, получаю сообщения об ошибках при установке новых драгоценных камней. Я новичок в 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.
Извините за список белья, но я очень хочу избавиться от всех этих проблем!
Заранее спасибо!
4 ответа
Это было бы лучше как отдельные вопросы, так как я могу ответить только на некоторые.
sudo
- В OS X гемы устанавливаются в каталог под/Library
, Все, что находится здесь, является общим для всех пользователей на Mac, и поэтому для записи на него вам необходим root-доступ, что дает вам sudo.
Вы видите команды без sudo, когда либо люди объясняют вещи быстро, поскольку они ожидают, что люди будут знать, когда использовать sudo, или если у них есть установочный ruby для установки в пользовательский каталог согласно документации Rubyи 4.: Не удается найти заголовочные файлы для ruby.
Я подозреваю, что вы не установили XCode, инструменты разработчика Apple. Они находятся на вашем OS X DVD или могут быть загружены из Apple или App Store, если вы используете OS X Lion./usr/local/bin
- это плохо.
Бежать/Applications/Utilities/Disk Utility.app
выберите загрузочный диск и разрешения на восстановление.
Я предлагаю установить Ruby Version Manger, и вам не нужно беспокоиться о проблемах sudo, и вы можете легко переключаться между различными версиями ruby и наборами гемов.
Ре № 4:
Если вам не хватает XCode и у вас есть учетная запись Apple Developers, вы также можете установить только инструменты командной строки (около 180 МБ) - загрузка доступна на сайте ADC.
Причина ошибки разрешения заключается в том, что вы не вошли в систему как пользователь root на терминале.
Если у вас уже есть root, включите на вашем компьютере Mac тип терминала (без символа $)
$ su
Если у вас нет пользователя root, вам нужно включить его, выполнив следующие действия
- В меню Apple выберите "Системные настройки".
- В меню "Вид" выберите "Пользователи и группы".
- Нажмите на замок и войдите в систему под учетной записью администратора.
- Нажмите Параметры входа….
- Нажмите кнопку "Изменить…" или "Присоединиться…" в правом нижнем углу.
- Нажмите кнопку "Открыть каталог".
- Нажмите на замок в окне утилиты каталогов.
- Введите имя учетной записи администратора и пароль, затем нажмите OK.
- Выберите Enable Root User в меню Edit.
- Введите пароль пользователя root, который вы хотите использовать, в поля "Пароль" и "Проверка", затем нажмите "ОК".
Более того же на http://support.apple.com/kb/ht1528
По крайней мере, это работает для меня после того, как я застрял на пару часов.