Zainstaluj Ruby 2.0 z obsługą OpenSSL i ReadLine

12

Mam świeżą maszynę wirtualną Ubuntu 12.04 i chciałbym zainstalować Ruby 2.0.0-p0. Mogę łatwo zainstalować Ruby, ale nie mogę sprawić, by klejnoty działały.

$ 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

Mam zainstalowany protokół SSL, więc nie jestem do końca pewien, na czym polega problem.

$ 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.

Podobnie,

$ which openssl
/usr/bin/openssl

Jeśli wrócę do instalacji, dotyczą mnie dwie linie.

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

Dzięki!

Jarrett Meyer
źródło

Odpowiedzi:

9

W lokalizacji źródłowej, cd ext/openssla następnie ruby extconf.rb. Wygeneruje to plik makefile w katalogu ext / openssl . Po prostu make && sudo make installzbuduj rozszerzenie Ruby openssl i zainstaluj .so w odpowiedniej lokalizacji.

To samo ext/readlinedotyczy wsparcia readline.

Wtedy powinieneś być w stanie makepoprawnie rubinować.

Edycja : na wypadek, gdy nie byłem wystarczająco jasny:

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
Matty K.
źródło
1
Uwaga: ta odpowiedź dotyczy ręcznego budowania i instalowania Ruby i jego modułów rozszerzeń. Zobacz odpowiedź @ chris-d, aby uzyskać odpowiedź opartą wyłącznie na apt.
Matty K
1
Utknąłem na trzeciej linii, starając się makew ext/openssl: *** No rule to make target '/include/ruby.h', needed by 'ossl.o'. Stop.samo za ext/readline.
ZX9,
@ ZX9 Miałem ten sam problem, rozwiązanie tutaj działało dla mnie.
jgon
5

Natknąłem się na ten sam problem, musiałem zainstalować następujące dwa pakiety

libssl-dev
libreadline-dev 

w rzeczywistości stwierdziłem, że musiałem zainstalować następujące pakiety, aby uzyskać Ruby 2.0.0 i Postgres 9.2 w celu skompilowania na Ubuntu 13.04 z openssl i readline, więc pomyślałem, że je podzielę

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
Chris D.
źródło
3

dla mnie był to przypadek braku zależności.

I pomyślałem miałem wszystkie zależności potrzebne do zainstalowania rubin, ale zbyt był coraz OpenSSL i readline błąd.

próbowałem zainstalować Ruby z RVM bez uprawnień roota, co nie powiodło się, ale dało mi listę brakujących zależności. następnie zainstalowałem zależności za pomocą menedżera pakietów. następnie od początku próbowałem zainstalować ruby ​​ze źródła i wszystko działało OK

dla mnie brakujące zależności to:

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

ale mogą być dla ciebie inne.

aktualizacja: pierwotnie nie pamiętam, gdzie dokładnie znalazłem tę listę, ale szybkie wyszukiwanie znalazło podobne listy na następujących stronach, które mogą również pomóc:

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

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

infinite-etcetera
źródło
0

Podczas instalacji Ruby 2.0 może się zdarzyć, że instalacja Rubygems 2.0 nie zakończyła się poprawnie z powodu openssl. Upewnij się, że podałeś prawidłową ścieżkę do pliku konfiguracyjnego openssl; mógłbyś:

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

Ścieżka to zwykle $ HOME / .rvm / usr lub $ HOME / .rvm / usr / ssl

Następnie

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

Upewnij się, że instalacja rubygemów została zakończona pomyślnie. Może to być lepszy sposób na naprawienie tej ścieżki bez ponownej instalacji, ale powinno to zrobić.

fdibartolo
źródło
1
Próbuję zainstalować bez RVM lub RBENV. Po prostu kompilacja ze źródeł. Stąd kroki ./configure, make i make install. Ale dziękuję.
Jarrett Meyer