10

我正在尝试合并 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。我试过了,但没有用。

请帮忙。谢谢你。

4

9 回答 9

27

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

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

sudo aptitude install libgmp-dev
于 2015-12-28T14:26:51.877 回答
5

尝试删除,'3.0.1'或尝试这样gem "bcrypt", "~> 3.1.1"

希望能帮助到你。

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

于 2013-09-23T20:44:23.127 回答
4

其实很简单:

gem install bundler
gem install bcrypt-ruby

接着:

bundle update bcrypt-ruby
or bundle update bcrypt

会成功的。

这与升级导轨的方式大致相同。如果您想确保还可以在 Gemfile 中指定最新的 bcrypt-ruby。我十分钟前才这样做,所以我知道它在这篇文章的日期有效......我使用的是 ruby​​ 1.9.3 p484

于 2013-12-26T14:02:42.937 回答
2

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

我的解决方案:

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

它有效

于 2013-11-05T09:10:28.057 回答
2

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

sudo apt install ruby-dev
于 2019-06-14T14:32:37.653 回答
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

LIBRARY_PATH接下来,通过设置环境变量确保 gcc 将找到库:

export LIBRARY_PATH=/usr/local/lib

并安装:

gem install bcrypt
于 2016-05-07T20:47:12.383 回答
0
  1. 将所需的 gem 添加到 Gemfile
  2. 如果 bundle install 的远程路径有空格,则将此行添加到您的配置文件中:.bundle\config:

BUNDLE_LOCAL__BCRYPT:C:\RailsInstaller\Ruby2.1.0\lib\ruby\gems\2.1.0\gems\bcrypt-3.1.10\lib

  1. 运行捆绑安装
于 2015-09-08T19:45:33.553 回答
0

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

在mac上测试:

确保它gem 'bcrypt', '3.1.11'在您的 gemfile 中,然后运行xcode-select --install​​. 跑bundle install

而已。

祝你好运

于 2017-12-13T10:54:18.150 回答
-2

具有用 C 编写的扩展的 Gem,例如 bcrypt,不会总是在不同的平台/ruby 版本上编译。您可以寻找 bcrypt 的纯 ruby​​ 替代品,并完全避免 C 扩展可能出现的问题。您还可以尝试不同版本的 gem,看看它是否可以在您的系统上编译。

于 2013-09-23T20:43:47.387 回答