ติดตั้ง Ruby 2.0 ด้วยการสนับสนุน OpenSSL และ ReadLine


12

ฉันมี Ubuntu 12.04 VM ใหม่และฉันต้องการติดตั้ง 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นี้จะสร้าง Makefile ในต่อไดเรกทอรี / OpenSSL เพียงmake && sudo make installเพื่อสร้างส่วนขยายopenssl ruby และติดตั้ง. 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 สำหรับคำตอบที่ใช้ apt บริสุทธิ์
Matty K

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

สำหรับฉันมันเป็นกรณีของการพึ่งพาที่ขาดหายไป

ฉันคิดว่าฉันมีการพึ่งพาทั้งหมดที่จำเป็นในการติดตั้งทับทิม แต่ฉันก็รับข้อผิดพลาด openSSL และ readline

ฉันพยายามติดตั้ง ruby ​​ด้วย RVM โดยไม่มีสิทธิ์รูทซึ่งล้มเหลว แต่ให้รายการการพึ่งพาที่ขาดหายไป ฉันติดตั้งการขึ้นต่อกันกับผู้จัดการแพ็คเกจ ฉันพยายามติดตั้งทับทิมจากแหล่งใหม่อีกครั้งและทุกอย่างก็ใช้ได้

การพึ่งพาที่ขาดหายไปสำหรับฉันคือ:

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 config คุณสามารถ:

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 เพียงรวบรวมจากแหล่งที่มา ดังนั้น. / config ทำและทำตามขั้นตอนการติดตั้ง ขอบคุณค่ะ
Jarrett Meyer
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.