2013-09-23 95 views
9

Tôi đang cố gắng mã hóa bcrypt-ruby, v. 3.0.1. Tôi nhập đá quý trong tập tin đá quý của tôi như sau:Tại sao đá quý bcrypt ruby ​​không được cài đặt đúng cách?

gem 'bcrypt-ruby', '3.0.1' 

Và sau đó tôi đi đến nhà ga và chạy:

bundle install 

tôi nhận được câu trả lời sau đây:

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. 

Tôi cực kỳ mới đối với cả Ruby và Rails và không biết cách sửa lỗi này. Tôi đã thấy các trang stackoverflow khác với các câu hỏi tương tự nhưng không ai có thể giúp tôi. Gần đây tôi đã nâng cấp lên Mountain Lion và được cho biết đó có thể là một vấn đề. Tôi được yêu cầu sử dụng RVM để gỡ cài đặt và sau đó cài đặt lại Ruby. Tôi đã thử nó và nó không hoạt động.

Vui lòng trợ giúp. Cảm ơn bạn.

+0

bạn có thể vui lòng bao gồm các nội dung của '/ Users/philip7899/.bundler/tmp/2186/đá quý/bcrypt-ruby-3.0.1/ext/MRI/gem_make.out'? –

Trả lời

4

Hãy thử loại bỏ ,'3.0.1' hoặc thử như thế này gem "bcrypt", "~> 3.1.1"

Hy vọng nó giúp.

Nếu không, từ giao diện điều khiển thử chạy gem install bcrypt

+0

Cảm ơn, đã thử tất cả những điều đó nhưng không có gì hiệu quả. – Philip7899

+0

Sau đó, tôi chỉ có thể chuyển tiếp bạn [ở đây] (http://stackoverflow.com/questions/6119153/why-do-i-get-a-bcrypt-ruby-gem-install-error). – Phil

+0

Sự kết hợp của câu trả lời của bạn cộng với liên kết bạn gửi cho tôi (mà tôi đã thử trước đó) đã làm việc! Cảm ơn bạn! – Philip7899

-2

Đá quý có phần mở rộng được viết bằng C, như bcrypt, sẽ không luôn biên dịch trên các nền tảng/phiên bản ruby ​​khác nhau. Bạn có thể tìm kiếm một sự thay thế ruby ​​thuần khiết để bcrypt và tránh các vấn đề có thể xảy ra với các phần mở rộng C hoàn toàn. Bạn cũng có thể thử một phiên bản khác của đá quý và xem nó có biên dịch trên hệ thống của bạn hay không.

+0

Cảm ơn, tôi cần phải sử dụng phiên bản này mặc dù vì các hướng dẫn tôi có (cuốn sách lớn mà tôi đang ở giữa) sử dụng này và tôi không đủ tiên tiến để đi ra khỏi cuốn sách. – Philip7899

+0

Bạn đang sử dụng hệ điều hành nào? Tôi đã có kết quả tốt nhất cho các phần mở rộng C bằng cách sử dụng MRI trên một hệ điều hành giống Unix. –

+0

Tôi đang sử dụng OSX Mountain Lion – Philip7899

2

Tôi nghĩ đó là một vấn đề về nâng cấp xcode.

Giải pháp của tôi:

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

và nó hoạt động

4

Trên thực tế đơn giản:

gem install bundler 
gem install bcrypt-ruby 

và sau đó:

bundle update bcrypt-ruby 
or bundle update bcrypt 

có đã làm các trick.

Cũng giống như cách bạn nâng cấp đường ray. Nếu bạn muốn chắc chắn rằng bạn cũng có thể chỉ định bcrypt ruby ​​mới nhất trong Gemfile của bạn. Tôi chỉ làm điều này cách đây mười phút vì vậy tôi biết nó hoạt động kể từ ngày của bài viết này ... Tôi đã sử dụng ruby ​​1.9.3 p484

+0

'gem install bundler' đã làm việc cho tôi. Cảm ơn bạn! @ mystic-cola – Zakaria

0
  1. thêm đá quý cần thiết để Gemfile
  2. thêm dòng này vào bạn cấu hình tập tin nếu con đường từ xa cho bó cài đặt có không gian: .bundle \ config:

BUNDLE_LOCAL__BCRYPT: C: \ RailsInstaller \ Ruby2.1.0 \ lib \ ruby ​​\ đá quý \ 2.1.0 \ đá quý \ bcrypt-3.1 .10 \ lib

  1. chạy bó cài đặt
26

Trong các phiên bản gần đây bcrypt-ruby dường như sử dụng thư viện GMP.

Vì vậy, trên Linux một cái gì đó như thế này sẽ giúp (lệnh cho Ubuntu 14.04):

sudo aptitude install libgmp-dev 
+3

'sudo apt-get cài đặt libgmp-dev' làm việc cho tôi – KaizenCodes

+0

Cảm ơn @Envek, bạn đã tiết kiệm rất nhiều thời gian của tôi. –

2

tôi quản lý để khắc phục vấn đề của tôi với cài đặt bcrypt 3.1.11 đá quý mà đã thất bại với:

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 

Sự cố là libgmp không được tìm thấy. Đầu tiên, cài đặt nó qua brew:

brew install gmp 

Tiếp theo, đảm bảo gcc sẽ tìm các thư viện bằng cách thiết lập các biến LIBRARY_PATH môi trường:

export LIBRARY_PATH=/usr/local/lib 

Và cài đặt:

gem install bcrypt 
+0

Tôi đã thử rất nhiều thứ để có được điều này để thành công. Xuất đường dẫn thư viện đã giải quyết nó cho tôi. Cảm ơn bạn! – BananaNeil

0

Đây là giải pháp đơn giản phù hợp với tôi:

Đã thử nghiệm trên máy Mac:

Đảm bảo rằng gem 'bcrypt', '3.1.11' nằm trong gemfile của bạn, sau đó chạy xcode-select --install. Chạy bundle install

Vậy đó.

Best of lucks