Saturday, April 8, 2017

Ruby packages for Ubuntu

Brightbox have been providing optimised Ruby packages for Ubuntu for years. We’re currently maintaining packages for Ruby 2.3, 2.2, 2.1, 2.0, 1.9.3, and 1.8.7. Our Ruby 1.9.3 and 1.8.7 packages are modified with various performance improvements.

Ruby 2.3

We provide Ruby 2.3 packages for Ubuntu Yakkety, Xenial, Trusty and Precise. Our Ruby 2.3 packages are built from unmodified versions of Ruby.

Ruby 2.2

We provide Ruby 2.2 packages for Ubuntu Yakkety, Xenial, Trusty and Precise. Our Ruby 2.2 packages are built from unmodified versions of Ruby.

Ruby 2.1

We provide Ruby 2.1 packages for Ubuntu Yakkety, Xenial, Trusty and Precise. Our Ruby 2.1 packages are built from unmodified versions of Ruby.

Ruby 2.0

We provide Ruby 2.0 packages for Ubuntu Yakkety, Xenial, Trusty, Precise and Lucid. Our Ruby 2.0 packages are built from unmodified versions of Ruby.

Ruby 1.9.3

We provide Ruby 1.9.3 packages for Ubuntu Yakkety, Xenial, Trusty, Precise and Lucid. Our Ruby 1.9.3 packages include some major performance improvements:
  • Built with Google’s high performance memory allocator, tcmalloc
  • Added Sokolov Yura’s performance patches
  • Added Narihiro Nakamura’s Bitmap Marking garbage collector (backported by Sakolov Yura)
  • Greg Price’s “require” performance fixes.
  • Patched to export the right symbols to work with ruby-debug
  • Updated rubygems to latest 1.8.x release

Ruby 1.8.7

We provide Ruby 1.8.7 packages for Ubuntu Xenial, Trusty, Precise and Lucid. Our Ruby 1.8.7 packages include some major improvements:
  • Ruby Enterprise Edition patches for 1.8.7-358 (2012.02)
  • Built with Google’s high performance memory allocator, tcmalloc
  • Updated rubygems packages to latest 1.3.x release

Installation

All the above packages are available from our Launchpad package repository.

Adding the repository

If you’re using Ubuntu 14.04 (Trusty) or newer then you can add the package repository like this:
$ sudo apt-get install software-properties-common
$ sudo apt-add-repository ppa:brightbox/ruby-ng
$ sudo apt-get update
Or if you’re on Ubuntu 12.04 (Precise) or older
$ sudo apt-get install python-software-properties
$ sudo apt-add-repository ppa:brightbox/ruby-ng
$ sudo apt-get update

Installing the packages

Each version of Ruby has its own packages - just install the packages for the versions you’d like to use.
So to install Ruby1.8, Ruby 1.9.3 and Ruby 2.2
$ sudo apt-get install ruby1.8 ruby1.9.3 ruby2.2
And you’ll usually need the dev packages too, so you can build native extensions
$ sudo apt-get install ruby1.8-dev ruby1.9.3-dev ruby2.2-dev
Then you can run the different versions of ruby like this:
$ ruby1.8 -v
ruby 1.8.7 (2015-04-14 MBARI 8/0x6770 on patchlevel 375) [x86_64-linux], MBARI 0x6770, Ruby Enterprise Edition 2012.02

$ ruby1.9.3 -v
ruby 1.9.3p551 (2014-11-13) [x86_64-linux] Brightbox

$ gem1.8 install bundler

$ gem1.9.3 install bundler

Switching the default Ruby version

You can also switch the default Ruby version back and forth between versions using theruby-switch tool:
$ sudo apt-get install ruby-switch

$ ruby -v
ruby 1.8.7 (2015-04-14 MBARI 8/0x6770 on patchlevel 375) [x86_64-linux], MBARI 0x6770, Ruby Enterprise Edition 2012.02

$ ruby-switch --list
ruby1.8
ruby1.9.1
ruby2.0
ruby2.1
ruby2.2

$ sudo ruby-switch --set ruby1.9.1
update-alternatives: using /usr/bin/ruby1.9.1 to provide /usr/bin/ruby (ruby) in manual mode.
update-alternatives: using /usr/bin/gem1.9.1 to provide /usr/bin/gem (gem) in manual mode.

$ ruby -v
ruby 1.9.3p551 (2014-11-13) [x86_64-linux] Brightbox
(note that Ruby 1.9.3 shows as 1.9.1, due to a historical Debian thing about binary compatibility)

Gem binaries

Any binaries installed by gems (such as bundler’s bundle command) might not automatically use the current default version of ruby (preferring the version that was default at the time it was installed). In that case, you can explicitly run it under a specific version like this:
$ ruby1.9.1 -S bundle -v
Bundler version 1.6.3
If you’re using multiple versions of ruby on a server, it’s best to explicitly run any ruby binaries with the desired version of Ruby like this.

Ruby 1.8 gems

The ruby 1.8 packages on Lucid, Precise and Trusty don’t come with the rubygems libraries, so you need to install that separately if you need it:
$ sudo apt-get install ruby1.8 rubygems
You don’t need this on Xenial though.

No comments:

Post a Comment