This post is from a time before RVM or rbenv you should check out those instead..
With Ruby 1.9 out there's the obvious possiblitity some people will want to run multiple versions of Ruby so I thought I'd share this.
My goal is to have the Ubuntu Ruby packages installed along side the most current releases of 1.8 and 1.9
First I'll install using apt to create my default ruby install.
$> sudo apt-get install ruby irb ri rdoc libruby-extras rubygems ruby1.8-dev $> sudo gem install rake
Next I'll install the most current release packages of 1.8 and 1.9 in to /opt/ruby1.8.6 and /opt/ruby1.9.0 respectively.
Before doing that I'll make sure I have all the necessary build dependencies for both packages
$> sudo apt-get build-dep ruby1.8 ruby1.9
Next I downloaded both packages into a working directory and decompress them
$>mkdir temp; cd temp $>wget ftp://ftp.ruby-lang.org/pub/ruby/1.8/ruby-1.8.6-p111.tar.gz $>tar -xvzf ruby-1.8.6-p111.tar.gz $>wget ftp://ftp.ruby-lang.org/pub/ruby/1.9/ruby-1.9.0-0.tar.gz $>tar -xvzf ruby-1.9.0-0.tar.gz
Next I build each of the packages.
$> cd ruby-1.8* $> ./configure --prefix=/opt/ruby1.8 --program-suffix=1.8.6 $> sudo make && make install $> cd ../ruby-1.9* $> ./configure --prefix=/opt/ruby1.9 --program-suffix=1.9.0 $> sudo make && make installRuby 1.8 doesn't have built in support for gems like Ruby 1.9 so we'll have to install it.
$> wget http://rubyforge.org/frs/download.php/29548/rubygems-1.0.1.tgz $> tar -xvzf rubygems-1.0.1.tgz $> cd rubygems* $> sudo /opt/ruby1.8.6/bin/ruby1.8.6 setup.rbNotice that I specified the entire path to the ruby executable while installing RubyGems for 1.8.6
The next thing I do is create some symbolic links to make life a little bit easier.
$> sudo ln -s /opt/ruby1.8.6/bin/* /usr/local/bin $> sudo ln -s /opt/ruby1.9.0/bin/* /usr/local/binNow test things a bit to make sure everything makes sense
$> which ruby # /usr/bin/ruby $> gem env # .... # GEM PATH: /var/lib/gems/1.8 # .... $> which ruby1.8.6 # /usr/local/bin/ruby1.8.6 $> gem1.8.6 env # .... # GEM PATH: /opt/ruby1.8.6/lib/ruby/gems/1.8 # .... $> which ruby1.9.0 # /usr/local/bin/ruby1.9.0 $> gem1.9.0 env # .... # GEM PATH: /opt/ruby1.9.0/lib/ruby/gems/1.8 # ....
A couple of things to watch out for:
- Make sure you don't have any RubyGems environment variables set. They're not needed for any of this and most likley will mess something up.
- Don't install any gems until after you create your symbolic links or the executable commands may clobber each other.
- You have to specify the full path to an executable gem because they don't play nicely with program suffixes. So for example '/opt/ruby1.8.6/bin/rake' will do what you expect but just typing 'rake' may not.
if [ -d /var/lib/gems/1.8/bin ]; then PATH=/var/lib/gems/1.8/bin:"${PATH}" fi export PATH