2013-09-23 54 views
9

我正在嘗試組裝bcrypt-ruby,v。3.0.1。我在寶石文件中輸入的寶石如下:爲什麼不能正確安裝bcrypt ruby​​ 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頁面,但沒有人能夠幫助我。我最近升級到山獅,並被告知這可能是一個問題。我被告知使用RVM卸載並重新安裝Ruby。我試過了,但沒有奏效。

請幫忙。謝謝。

+0

的能否請您包括'/用戶的內容/ philip7899/.bundler的/ tmp/2186 /寶石/ bcrypt-紅寶石3.0.1/EXT/MRI/gem_make.out'? –

回答

4

嘗試刪除,'3.0.1'或嘗試這樣gem "bcrypt", "~> 3.1.1"

希望它能幫助。

如果不是,從控制檯嘗試運行gem install bcrypt

+0

謝謝,嘗試過所有這些,但沒有任何工作。 – Philip7899

+0

然後我只是可以轉發你[這裏](http://stackoverflow.com/questions/6119153/why-do-i-get-a-bcrypt-ruby-gem-install-error)。 – Phil

+0

您的答案加上您發給我的鏈接(我以前曾嘗試過)的組合工作!謝謝! – Philip7899

-2

寶石用C語言編寫的擴展,比如bcrypt,不會總是編譯在不同的平臺/ Ruby版本。您可以尋找純粹的ruby替代方法來完成加密,並完全避免C擴展可能出現的問題。你也可以嘗試不同版本的gem,看它是否在你的系統上編譯。

+0

謝謝,我需要使用這個版本,雖然因爲我的教程(我中途有一本巨大的書)會使用這個版本,所以我沒有足夠的先進技術去讀書。 – Philip7899

+0

你在使用什麼操作系統?在類Unix操作系統上,我使用MRI進行C擴展的最佳結果。 –

+0

我使用的是OSX Mountain Lion – Philip7899

2

我認爲的Xcode升級的問題。

我的解決辦法:

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

和它的作品

4

其實簡單:

gem install bundler 
gem install bcrypt-ruby 

然後:

bundle update bcrypt-ruby 
or bundle update bcrypt 

會一直做的伎倆。

這是多,你會升級軌道的方式相同。如果你想確保你也可以在你的Gemfile中指定最新的bcrypt-ruby。我只是做這十分鐘前,所以我知道它的工作原理是這個職位的日期...我使用Ruby 1.9.3 P484

+0

'gem install bundler'爲我工作。謝謝! @神祕可樂 – Zakaria

0
  1. 添加所需的寶石的Gemfile
  2. 加入這行到你如果束中的遠程路徑安裝配置文件中有空格: .bundle \設置:

BUNDLE_LOCAL__BCRYPT:C:\ RailsInstaller \ Ruby2.1.0 \ lib中\紅寶石\寶石\ 2.1.0 \寶石\ bcrypt-3.1 。10 \ lib中

  • 運行束安裝
  • 26

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

    所以,在Linux上這樣的事情應該幫助(在Ubuntu 14.04的命令):

    sudo aptitude install libgmp-dev 
    
    +3

    '命令和apt-get安裝libgmp-dev'工作對我來說 – KaizenCodes

    +0

    感謝@Envek,你救了我大量的時間。 –

    2

    我設法解決我的問題與安裝Bcrypt 3.1.11寶石這與失敗:

    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 
    
    +0

    我已經嘗試了很多事情來獲得成功。導出庫路徑爲我解決了它。謝謝! – BananaNeil

    0

    這是簡單的解決方案是爲我工作:

    測試在Mac上:

    確保gem 'bcrypt', '3.1.11'在你的Gemfile然後運行xcode-select --install。 運行bundle install

    就是這樣。

    最佳盧克斯