Почему bcrypt ruby gem не устанавливается должным образом?

Я пытаюсь encorporate bcrypt-ruby, V.3.0.1. Я ввожу драгоценный камень в свой файл драгоценного камня следующим образом:

gem 'bcrypt-ruby', '3.0.1'

и я тогда иду к терминалу и бегу:

bundle install

Я получаю следующий ответ:

Gem::Installer::ExtensionBuildError: ERROR: Failed to build gem native extension.

    /usr/local/rvm/rubies/ruby-1.9.3-p392/bin/ruby extconf.rb 
creating Makefile

make
compiling bcrypt_ext.c
make: gcc-4.2: No such file or directory
make: *** [bcrypt_ext.o] Error 1


Gem files will remain installed in /Users/philip7899/.bundler/tmp/2186/gems/bcrypt-ruby-3.0.1 for inspection.
Results logged to /Users/philip7899/.bundler/tmp/2186/gems/bcrypt-ruby-3.0.1/ext/mri/gem_make.out
An error occurred while installing bcrypt-ruby (3.0.1), and Bundler cannot continue.
Make sure that `gem install bcrypt-ruby -v '3.0.1'` succeeds before bundling.

Я очень новичок в Ruby и Rails и понятия не имею как это исправить. Я видел другие страницы stackoverflow с похожими вопросами, но никто не смог мне помочь. Недавно я перешел на Mountain Lion, и мне сказали, что это может быть вопрос. Мне сказали использовать RVM для удаления, а затем переустановить Ruby. Я попробовал, и это не сработало.

пожалуйста, помогите. Спасибо.

8 ответов


Попробуйте удалить ,'3.0.1' или попробуйте вот так gem "bcrypt", "~> 3.1.1"

надеюсь, что это помогает.

Если нет, с консоли попробуйте запустить gem install bcrypt


в последних версиях bcrypt-ruby Кажется, использует библиотеку GMP.

Так, в Linux что-то вроде этого должно помочь (команда для Ubuntu 14.04):

sudo aptitude install libgmp-dev

на самом деле простой:

gem install bundler
gem install bcrypt-ruby

и затем:

bundle update bcrypt-ruby
or bundle update bcrypt

сделал бы трюк.

это почти так же, как вы бы обновить rails. Если вы хотите убедиться, что вы также можете указать последнюю версию bcrypt-ruby в своем Gemfile. Я только что сделал это десять минут назад, поэтому я знаю, что он работает с даты этого сообщения... Я использовал ruby 1.9.3 p484


Я думаю, что это проблема обновления xcode.

мое решение:

brew install apple-gcc42
sudo ln -s /usr/local/bin/gcc-4.2 /usr/bin/gcc-4.2

и работает


мне удалось исправить мою проблему с установкой bcrypt 3.1.11 gem, который не удался с:

linking shared-object bcrypt_ext.bundle
ld: library not found for -lgmp
clang: error: linker command failed with exit code 1 (use -v to see invocation)
make: *** [bcrypt_ext.bundle] Error 1

make failed, exit code 2

Gem files will remain installed in /Users/adrian/.rvm/gems/ruby-2.1.6/gems/bcrypt-3.1.11 for inspection.
Results logged to /Users/adrian/.rvm/gems/ruby-2.1.6/extensions/x86_64-darwin-14/2.1.0/bcrypt-3.1.11/gem_make.out

проблема libgmp не найдено. Сначала установите его через brew:

brew install gmp

затем убедитесь, что gcc найдет библиотеки, установив LIBRARY_PATH переменные среды:

export LIBRARY_PATH=/usr/local/lib

и установить:

gem install bcrypt

  1. добавьте необходимый камень в Gemfile
  2. добавьте эту строку в файл конфигурации, если удаленный путь для установки пакета содержит пробелы: .bundle\config:

BUNDLE _ LOCAL_ _ BCRYPT: C:\RailsInstaller\Ruby2.1.0\lib\ruby\gems\2.1.0\gems\bcrypt-3.1.10\lib

  1. запустить bundle install

Это простое решение, которое сработало для меня:

протестировано на mac:

обеспечить gem 'bcrypt', '3.1.11' находится в вашем gemfile, затем запустите xcode-select --install. Запустить bundle install

вот именно.

лучшее из удачи


Gems с расширениями, написанными на C, такими как bcrypt, не всегда будут компилироваться на разных платформах/версиях ruby. Вы можете искать чистую альтернативу ruby bcrypt и избегать возможных проблем с расширениями C. Вы также можете попробовать другую версию gem и посмотреть, компилируется ли она в вашей системе.