Установите Ruby 2.0 с поддержкой OpenSSL и ReadLine


12

У меня свежая виртуальная машина Ubuntu 12.04, и я хотел бы установить Ruby 2.0.0-p0. Я могу достаточно легко установить Ruby, но не могу заставить работать гемы.

$ 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

У меня установлен открытый SSL, поэтому я не совсем уверен, в чем проблема.

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

Так же,

$ which openssl
/usr/bin/openssl

Если я вернусь к установке, меня будут беспокоить две строки.

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

Благодарность!

Ответы:


9

В вашем исходном местоположении, cd ext/opensslа затем ruby extconf.rb. Это сгенерирует make-файл в каталоге ext / openssl . Просто make && sudo make installсоздайте расширение ruby openssl и установите .so в соответствующее место.

То же самое ext/readlineдля поддержки readline.

Тогда вы должны уметь makeправильно рубиновать.

Изменить : если я не был достаточно ясен:

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
Примечание: этот ответ предназначен для сборки и установки Ruby и его модулей расширения вручную. Смотрите ответ @ chris-d, чтобы получить точный ответ.
Мэтти К

1
Я застрял на третьей строке, пытаясь makeв ext/openssl: *** No rule to make target '/include/ruby.h', needed by 'ossl.o'. Stop.То же самое для ext/readline.
ZX9

@ ZX9 У меня была такая же проблема, решение здесь работало для меня.
Jgon

5

Я столкнулся с той же проблемой, я должен был установить следующие два пакета

libssl-dev
libreadline-dev 

на самом деле я обнаружил, что мне нужно установить следующие пакеты, чтобы получить ruby ​​2.0.0 и postgres 9.2 для компиляции в ubuntu 13.04 с openssl и readline, поэтому я решил поделиться ими

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

для меня это был случай отсутствия зависимостей.

я думал, что у меня есть все зависимости, необходимые для установки ruby, но я тоже получаю openSSL и ошибку readline.

я попытался установить ruby ​​с RVM без прав суперпользователя, но не смог, но дал мне список отсутствующих зависимостей. Затем я установил зависимости с помощью менеджера пакетов. Затем я снова попытался установить ruby ​​из источника с самого начала, и все работало нормально.

у меня отсутствовали зависимости:

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

но они могут отличаться для вас.

обновление: я изначально не помню, где именно я нашел этот список, но быстрый поиск нашел похожие списки на следующих страницах, которые также могут помочь вам:

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


0

При установке ruby ​​2.0 возможно, что установка rubygems 2.0 не была завершена нормально из-за openssl. Убедитесь, что вы указали правильный путь к файлу конфигурации openssl; вы могли бы:

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

путь обычно является $ HOME / .rvm / usr или $ HOME / .rvm / usr / ssl

потом

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

Убедитесь, что установка rubygems успешно завершена. Может быть, лучший способ исправить этот путь без переустановки, но это следует сделать.


1
Я пытаюсь установить без RVM или RBENV. Просто составление из источников. Следовательно ./configure, make и сделать шаги установки. Однако, спасибо.
Джаррет Мейер
Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.