5

Поэтому я всегда получаю сообщения об ошибках при установке новых гемов. Я новичок в 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 ответа4

2

Это было бы лучше как отдельные вопросы, так как я могу ответить только на некоторые.

  1. sudo - В OS X гемы устанавливаются в каталог в /Library . Все, что находится здесь, является общим для всех пользователей на Mac, и поэтому для того, чтобы писать на него, вам нужен root-доступ, что дает вам sudo.
    Вы видите команды без sudo, когда либо люди объясняют вещи быстро, поскольку они ожидают, что люди будут знать, когда использовать sudo, или если у них есть установочный ruby для установки в пользовательский каталог согласно документации Ruby

  2. и 4 .: Не удается найти заголовочные файлы для ruby.
    Я подозреваю, что вы не установили XCode, инструменты разработчика Apple. Они находятся на вашем OS X DVD или могут быть загружены из Apple или App Store, если вы используете OS X Lion.

  3. /usr/local/bin - это плохо.
    Запустите /Applications/Utilities/Disk Utility.app , выберите загрузочный диск и восстановите права доступа.

2

Я предлагаю установить Ruby Version Manger, и вам не нужно беспокоиться о проблемах sudo, и вы можете легко переключаться между различными версиями ruby и наборами гемов.

1

Ре № 4:

Если вам не хватает XCode и у вас есть учетная запись Apple Developers, вы также можете установить только инструменты командной строки (около 180 МБ) - загрузка доступна на сайте ADC.

0

Причина ошибки разрешения заключается в том, что вы не вошли в систему как пользователь root на терминале.

Если у вас уже есть root, включите на вашем компьютере Mac тип терминала (без символа $)

$ su

Если у вас нет пользователя root, вам нужно включить его, выполнив следующие шаги

  1. В меню Apple выберите «Системные настройки».
  2. В меню «Вид» выберите «Пользователи и группы».
  3. Нажмите на замок и войдите в систему под учетной записью администратора.
  4. Нажмите Параметры входа….
  5. Нажмите кнопку «Изменить…» или «Присоединиться…» в правом нижнем углу.
  6. Нажмите кнопку «Открыть каталог».
  7. Нажмите на замок в окне утилиты каталогов.
  8. Введите имя учетной записи администратора и пароль, затем нажмите OK.
  9. Выберите Enable Root User в меню Edit.
  10. Введите пароль пользователя root, который вы хотите использовать, в поля «Пароль» и «Проверка», затем нажмите «ОК».

Более того же на http://support.apple.com/kb/ht1528

По крайней мере, это работает для меня после того, как я застрял на пару часов.

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .