为什么bcrypt ruby​​ gem不能正确安装?

时间:2013-09-23 20:34:12

标签: ruby-on-rails gem bundler bcrypt bcrypt-ruby

我正在试图加入bcrypt-ruby,v.3.0.1。我在我的gem文件中输入gem,如下所示:

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。我试过了,但没效果。

请帮忙。谢谢。

9 个答案:

答案 0 :(得分:26)

在最近的版本bcrypt-ruby似乎使用GMP库。

所以,在Linux上这样的东西应该有用(Ubuntu 14.04的命令):

sudo aptitude install libgmp-dev

答案 1 :(得分:4)

尝试删除,'3.0.1'或尝试使用此gem "bcrypt", "~> 3.1.1"

希望它有所帮助。

如果没有,请从控制台尝试运行gem install bcrypt

答案 2 :(得分:4)

其实很简单:

gem install bundler
gem install bcrypt-ruby

然后:

bundle update bcrypt-ruby
or bundle update bcrypt

会做的伎俩。

这与升级rails的方式大致相同。如果你想确保你也可以在你的Gemfile中指定最新的bcrypt-ruby。我刚刚在十分钟前完成了这个,所以我知道这个帖子的日期是有效的...我使用的是ruby 1.9.3 p484

答案 3 :(得分:2)

我认为这是xcode升级的问题。

我的解决方案:

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

并且有效

答案 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

答案 5 :(得分:0)

  1. 将所需的gem添加到Gemfile
  2. 如果bundle install的远程路径包含空格,请将此行添加到配置文件中: .bundle \配置:
  3. BUNDLE_LOCAL__BCRYPT:C:\ RailsInstaller \ Ruby2.1.0 \ lib \ ruby​​ \ gems \ 2.1.0 \ gems \ bcrypt-3.1.10 \ lib

    1. 运行捆绑安装

答案 6 :(得分:0)

这是一个对我有用的简单解决方案:

在mac上测试:

确保{gem}文件中包含gem 'bcrypt', '3.1.11',然后运行xcode-select --install。 运行bundle install

就是这样。

祝你好运

答案 7 :(得分:0)

您将需要在Ubuntu / Debian上运行以下命令:

sudo apt install ruby-dev

答案 8 :(得分:-2)

带有用C语言编写的扩展名的宝石,如bcrypt,不会总是在不同的平台/ ruby​​版本上编译。您可以寻找bcrypt的纯红宝石替代方案,并完全避免C扩展的可能问题。您也可以尝试不同版本的gem,看看它是否在您的系统上编译。