Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Installing Ruby 2.0 and Rails 4.0.0beta on AWS EC2

Installing Ruby 2.0.0 and Rails 4.0.0beta1 on the default Amazon EC2 Linux install (Amazon Linux AMI 2012.09.1) goes smoothly. But openssl gets in the way (eg http://railsapps.github.com/openssl-certificate-verify-failed.html) and weird either prevent openssl from getting installed or causing the RubyGem package manager from installing rails.

How can I work around these problems?

like image 316
Paul Ardeleanu Avatar asked Mar 20 '13 21:03

Paul Ardeleanu


1 Answers

Log into your brand new instance:

[19:59:22] paul:~ $ ssh -i ~/.ssh/server.pem [email protected]     __|  __|_  )    _|  (     /   Amazon Linux AMI   ___|\___|___|    https://aws.amazon.com/amazon-linux-ami/2012.09-release-notes/ 

and impersonate the root:

$ sudo su - 

You are logged in as root from here. Apply the server updates:

[root@ip-xx ~]# yum update ... Complete! [root@ip-xx ~]# yum groupinstall "Development Tools" ... Install      72 Package(s) ... Complete! 

Now, this is where it differs from the standard solution. Install RVM but without a distribution of ruby:

[root@ip-xx ~]# \curl -L https://get.rvm.io | bash -s stable    % Total    % Received % Xferd  Average Speed   Time    Time     Time  Current                                  Dload  Upload   Total   Spent    Left  Speed 100   184  100   184    0     0    135      0  0:00:01  0:00:01 --:--:--   183 100 11861  100 11861    0     0   7180      0  0:00:01  0:00:01 --:--:-- 64113 Downloading RVM from wayneeseguin branch stable   % Total    % Received % Xferd  Average Speed   Time    Time     Time  Current                                  Dload  Upload   Total   Spent    Left  Speed 100   124  100   124    0     0    161      0 --:--:-- --:--:-- --:--:--   185 100 1615k  100 1615k    0     0   258k      0  0:00:06  0:00:06 --:--:--  401k  Installing RVM to /usr/local/rvm/     Creating group 'rvm'  # RVM:  Shell scripts enabling management of multiple ruby environments. # RTFM: https://rvm.io/ # HELP: http://webchat.freenode.net/?channels=rvm (#rvm on irc.freenode.net) # Cheatsheet: http://cheat.errtheblog.com/s/rvm/ # Screencast: http://screencasts.org/episodes/how-to-use-rvm  # In case of any issues read output of 'rvm requirements' and/or 'rvm notes'  Installation of RVM in /usr/local/rvm/ is almost complete:    * First you need to add all users that will be using rvm to 'rvm' group,     and logout - login again, anyone using rvm will be operating with `umask u=rwx,g=rwx,o=rx`.    * To start using RVM you need to run `source /etc/profile.d/rvm.sh`     in all your open shell windows, in rare cases you need to reopen all shell windows.  # root, # #   Thank you for using RVM! #   I sincerely hope that RVM helps to make your life easier and #   more enjoyable!!! # # ~Wayne 

Let's check that no ruby version is installed:

[root@ip-xx ~]# rvm list  rvm rubies   # No rvm rubies installed yet. Try 'rvm help install'. 

Now, openssl is already installed on the system but is incompatible with setup:

[root@ip-xx ~]# openssl version OpenSSL 1.0.0k-fips 5 Feb 2013  [root@ip-xx ~]# openssl version -d OPENSSLDIR: "/etc/pki/tls" 

Attempting to install ruby2 with this version will result in the following error:

[root@ip-xx ~]# rvm install 2.0.0 -- --with-openssl-dir=/etc/pki/tls Fetching yaml-0.1.4.tar.gz to /usr/local/rvm/archives ######################################################################## 100.0% Extracting yaml to /usr/local/rvm/src/yaml-0.1.4 Prepare yaml in /usr/local/rvm/src/yaml-0.1.4. Configuring yaml in /usr/local/rvm/src/yaml-0.1.4. Compiling yaml in /usr/local/rvm/src/yaml-0.1.4. Installing yaml to /usr/local/rvm/usr Installing Ruby from source to: /usr/local/rvm/rubies/ruby-2.0.0-p0, this may take a while depending on your cpu(s)... ruby-2.0.0-p0 - #downloading ruby-2.0.0-p0, this may take a while depending on your connection... ######################################################################## 100.0% ruby-2.0.0-p0 - #extracting ruby-2.0.0-p0 to /usr/local/rvm/src/ruby-2.0.0-p0 ruby-2.0.0-p0 - #extracted to /usr/local/rvm/src/ruby-2.0.0-p0 ruby-2.0.0-p0 - #configuring ruby-2.0.0-p0 - #compiling ruby-2.0.0-p0 - #installing  Retrieving rubygems-2.0.3 ######################################################################## 100.0% Extracting rubygems-2.0.3 ... Removing old Rubygems files... Installing rubygems-2.0.3 for ruby-2.0.0-p0 ... Error running 'env GEM_PATH=/usr/local/rvm/gems/ruby-2.0.0-p0:/usr/local/rvm/gems/ruby-2.0.0-p0@global:/usr/local/rvm/gems/ruby-2.0.0-p0:/usr/local/rvm/gems/ruby-2.0.0-p0@global GEM_HOME=/usr/local/rvm/gems/ruby-2.0.0-p0 /usr/local/rvm/rubies/ruby-2.0.0-p0/bin/ruby /usr/local/rvm/src/rubygems-2.0.3/setup.rb', please read /usr/local/rvm/log/ruby-2.0.0-p0/rubygems.install.log Installation of rubygems did not complete successfully. Saving wrappers to '/usr/local/rvm/bin'. ruby-2.0.0-p0 - #adjusting #shebangs for (gem irb erb ri rdoc testrb rake). cp: overwrite `/usr/local/rvm/rubies/ruby-2.0.0-p0/bin/gem'? y cp: overwrite `/usr/local/rvm/rubies/ruby-2.0.0-p0/bin/irb'? y cp: overwrite `/usr/local/rvm/rubies/ruby-2.0.0-p0/bin/erb'? y cp: overwrite `/usr/local/rvm/rubies/ruby-2.0.0-p0/bin/ri'? y cp: overwrite `/usr/local/rvm/rubies/ruby-2.0.0-p0/bin/rdoc'? y cp: overwrite `/usr/local/rvm/rubies/ruby-2.0.0-p0/bin/testrb'? y cp: overwrite `/usr/local/rvm/rubies/ruby-2.0.0-p0/bin/rake'? y ruby-2.0.0-p0 - #importing default gemsets, this may take time ... Install of ruby-2.0.0-p0 - #complete 

Although you'll get ruby2, the "Installation of rubygems did not complete successfully" - notice the warning: "Error running 'env GEM_PATH=..."

Instead, we'll get RVM install a copy of openssl for us (see https://rvm.io/packages/openssl/). The zlib-devel package is required:

[root@ip-xx ~]# yum install zlib-devel ... Installed:   zlib-devel.x86_64 0:1.2.5-7.11.amzn1                                                                                    Complete! [root@ip-xx ~]# rvm pkg install openssl Fetching openssl-1.0.1c.tar.gz to /usr/local/rvm/archives Extracting openssl to /usr/local/rvm/src/openssl-1.0.1c Configuring openssl in /usr/local/rvm/src/openssl-1.0.1c. Compiling openssl in /usr/local/rvm/src/openssl-1.0.1c. Installing openssl to /usr/local/rvm/usr  Please note that it's required to reinstall all rubies:      rvm reinstall all --force  Updating openssl certificates 

We can now install ruby2:

[root@ip-xx ~]# rvm reinstall 2.0.0 --with-openssl-dir=/usr/local/rvm/usr Removing /usr/local/rvm/src/ruby-2.0.0-p0... Removing /usr/local/rvm/rubies/ruby-2.0.0-p0... Installing Ruby from source to: /usr/local/rvm/rubies/ruby-2.0.0-p0, this may take a while depending on your cpu(s)... ruby-2.0.0-p0 - #downloading ruby-2.0.0-p0, this may take a while depending on your connection... ruby-2.0.0-p0 - #extracting ruby-2.0.0-p0 to /usr/local/rvm/src/ruby-2.0.0-p0 ruby-2.0.0-p0 - #extracted to /usr/local/rvm/src/ruby-2.0.0-p0 ruby-2.0.0-p0 - #configuring ruby-2.0.0-p0 - #compiling ruby-2.0.0-p0 - #installing  Removing old Rubygems files... Installing rubygems-2.0.3 for ruby-2.0.0-p0 ... Installation of rubygems completed successfully. Saving wrappers to '/usr/local/rvm/bin'. ruby-2.0.0-p0 - #adjusting #shebangs for (gem irb erb ri rdoc testrb rake). cp: overwrite `/usr/local/rvm/rubies/ruby-2.0.0-p0/bin/gem'? y cp: overwrite `/usr/local/rvm/rubies/ruby-2.0.0-p0/bin/irb'? y cp: overwrite `/usr/local/rvm/rubies/ruby-2.0.0-p0/bin/erb'? y cp: overwrite `/usr/local/rvm/rubies/ruby-2.0.0-p0/bin/ri'? y cp: overwrite `/usr/local/rvm/rubies/ruby-2.0.0-p0/bin/rdoc'? y cp: overwrite `/usr/local/rvm/rubies/ruby-2.0.0-p0/bin/testrb'? y cp: overwrite `/usr/local/rvm/rubies/ruby-2.0.0-p0/bin/rake'? y ruby-2.0.0-p0 - #importing default gemsets, this may take time ... Install of ruby-2.0.0-p0 - #complete  Making gemset ruby-2.0.0-p0 pristine. Making gemset ruby-2.0.0-p0@global pristine.  [root@ip-xx ~]# ruby -v ruby 2.0.0p0 (2013-02-24 revision 39474) [x86_64-linux] 

And rails4:

[root@ip-xx ~]# gem install rails -v 4.0.0beta1 ... 28 gems installed [root@ip-xx ~]# gem list  *** LOCAL GEMS ***  actionmailer (4.0.0.beta1) actionpack (4.0.0.beta1) activemodel (4.0.0.beta1) activerecord (4.0.0.beta1) activerecord-deprecated_finders (0.0.3) activesupport (4.0.0.beta1) arel (4.0.0.beta2) atomic (1.0.1) bigdecimal (1.2.0) builder (3.1.4) bundler (1.3.4) erubis (2.7.0) hike (1.2.1) i18n (0.6.4) io-console (0.4.2) json (1.7.7) mail (2.5.3) mime-types (1.21) minitest (4.3.2) multi_json (1.7.1) polyglot (0.3.3) psych (2.0.0) rack (1.5.2) rack-test (0.6.2) rails (4.0.0.beta1) railties (4.0.0.beta1) rake (10.0.3, 0.9.6) rdoc (4.0.0, 3.12.2) rubygems-bundler (1.1.1) rvm (1.11.3.6) sprockets (2.9.0) sprockets-rails (2.0.0.rc3) test-unit (2.0.0.0) thor (0.17.0) thread_safe (0.1.0) tilt (1.3.6) treetop (1.4.12) tzinfo (0.3.37) 

That's all folks!

like image 96
Paul Ardeleanu Avatar answered Sep 26 '22 04:09

Paul Ardeleanu