Cài đặt Ruby 2.0 với hỗ trợ OpenSSL và ReadLine


12

Tôi có một máy ảo Ubuntu 12.04 mới và tôi muốn cài đặt Ruby 2.0.0-p0. Tôi có thể cài đặt Ruby đủ dễ dàng, nhưng tôi không thể làm cho đá quý hoạt động được.

$ gem install bundler
ERROR:  Loading command: install (LoadError)
cannot load such file -- openssl
ERROR:  While executing gem ... (NoMethodError)
    undefined method `invoke_with_build_args' for nil:NilClass

Tôi đã cài đặt SSL mở, vì vậy tôi không chắc chắn vấn đề là gì.

$ sudo apt-get install libssl1.0.0 libssl-dev
Reading package lists... Done
Building dependency tree       
Reading state information... Done
libssl-dev is already the newest version.
libssl1.0.0 is already the newest version.
0 upgraded, 0 newly installed, 0 to remove and 0 not upgraded.

Tương tự

$ which openssl
/usr/bin/openssl

Nếu tôi quay lại cài đặt, có hai dòng liên quan đến tôi.

$ sudo make install
Failed to configure openssl. It will not be installed.
Failed to configure readline. It will not be installed.

Cảm ơn!

Câu trả lời:


9

Trong vị trí nguồn của bạn, cd ext/opensslvà sau đó ruby extconf.rb. Điều này sẽ tạo ra một tệp thực hiện trong thư mục ext / openssl . Đơn giản chỉ cần make && sudo make installxây dựng phần mở rộng ruby openssl và cài đặt .so vào vị trí thích hợp.

Ditto ext/readlineđể hỗ trợ đọc.

Sau đó, bạn sẽ có thể makeruby đúng cách.

Chỉnh sửa : trong trường hợp tôi không đủ rõ ràng:

pushd ext/openssl
ruby extconf.rb
make && sudo make install
popd

pushd ext/readline
ruby extconf.rb
make && sudo make install
popd

make
sudo make install

1
Lưu ý: câu trả lời này là để xây dựng và cài đặt thủ công Ruby và các mô-đun mở rộng của nó. Xem câu trả lời của @ chris-d để biết câu trả lời dựa trên apt thuần túy.
Matty K

1
Tôi bị kẹt ở dòng thứ ba, cố gắng makevào ext/openssl: *** No rule to make target '/include/ruby.h', needed by 'ossl.o'. Stop.Điều tương tự cho ext/readline.
ZX9

@ ZX9 Tôi có cùng một vấn đề, giải pháp ở đây đã làm việc cho tôi.
jgon

5

Tôi gặp vấn đề tương tự, tôi đã phải cài đặt hai gói sau

libssl-dev
libreadline-dev 

trong thực tế, tôi thấy rằng tôi đã phải cài đặt các gói sau để có được ruby ​​2.0.0 và postgres 9.2 để biên dịch trên Ubuntu 13.04 với openssl và readline vì vậy tôi nghĩ rằng tôi sẽ chia sẻ chúng

sudo apt-get -y update
sudo apt-get install -y make g++
sudo apt-get install -y curl git-core python-software-properties
sudo apt-get install -y build-essential zlib1g-dev libyaml-dev libssl-dev
sudo apt-get install -y libgdbm-dev libreadline6-dev libncurses5-dev
sudo apt-get install -y libpq-dev libffi-dev

3

Đối với tôi đó là một trường hợp thiếu phụ thuộc.

Tôi nghĩ rằng tôi đã có tất cả các phụ thuộc cần thiết để cài đặt ruby, nhưng tôi cũng đã nhận được một lỗi openSSL và readline.

tôi đã cố gắng cài đặt ruby ​​với RVM mà không có quyền root nhưng không cho tôi một danh sách các phụ thuộc bị thiếu. i sau đó cài đặt các phụ thuộc với một trình quản lý gói. sau đó tôi đã cố gắng cài đặt lại ruby ​​từ nguồn ngay từ đầu và mọi thứ đều hoạt động tốt

đối với tôi, các phụ thuộc bị thiếu là:

patch libyaml-devel autoconf gcc-c++ readline-devel libffi-devel openssl-devel automake libtool bison sqlite-devel

nhưng họ có thể khác nhau cho bạn.

cập nhật: ban đầu tôi không nhớ chính xác nơi tôi tìm thấy danh sách này, nhưng một tìm kiếm nhanh đã tìm thấy danh sách tương tự trên các trang sau, điều này cũng có thể giúp bạn:

https://www.digitalocean.com/community/tutorials/how-to-install-ruby-on-rails-on-centos-6-with-rvm

http://www.itzgeek.com/how-tos/linux/ubfox-how-tos/install-ruby-on-rails-on-centos-ubfox-fedora-from-source.html


0

Khi cài đặt ruby ​​2.0, có thể cài đặt rubygems 2.0 không hoàn thành ok, vì openssl. Đảm bảo rằng bạn cung cấp đường dẫn hợp lệ cho tệp cấu hình openssl; bạn có thể:

find . -type f -name "openssl.cnf"

đường dẫn thường là $ HOME / .rvm / usr hoặc $ HOME / .rvm / usr / ssl

Sau đó

[sudo] rvm reinstall ruby-2.0.0-p0 --with-openssl-dir=[openssl.cnf path] --verify-downloads 1

Đảm bảo cài đặt rubygems thành công. Có thể là một cách tốt hơn để sửa đường dẫn đó mà không cần cài đặt lại, nhưng điều này nên làm điều đó.


1
Tôi đang thử cài đặt mà không có RVM hoặc RBENV. Chỉ cần biên dịch từ các nguồn. Do đó, các cấu hình, tạo và thực hiện các bước cài đặt. Cảm ơn bạn mặc dù.
Jarrett Meyer
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.