Почему 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
- добавьте необходимый камень в Gemfile
- добавьте эту строку в файл конфигурации, если удаленный путь для установки пакета содержит пробелы: .bundle\config:
BUNDLE _ LOCAL_ _ BCRYPT: C:\RailsInstaller\Ruby2.1.0\lib\ruby\gems\2.1.0\gems\bcrypt-3.1.10\lib
- запустить bundle install
Это простое решение, которое сработало для меня:
протестировано на mac:
обеспечить gem 'bcrypt', '3.1.11'
находится в вашем gemfile, затем запустите xcode-select --install
.
Запустить bundle install
вот именно.
лучшее из удачи
Gems с расширениями, написанными на C, такими как bcrypt, не всегда будут компилироваться на разных платформах/версиях ruby. Вы можете искать чистую альтернативу ruby bcrypt и избегать возможных проблем с расширениями C. Вы также можете попробовать другую версию gem и посмотреть, компилируется ли она в вашей системе.