[Date Prev][Date Next] [Thread Prev][Thread Next] [Date Index] [Thread Index]

Bits from the Ruby team: switching to Ruby 1.9 and trasition to new policy

TL;DR: we are switching to Ruby 1.9 as the default Ruby interpreter.
Ruby 1.8 will still be available in Wheezy, but will be dropped in

Hello all,

New versions of the ruby1.9.1 and ruby-defaults packages will be
uploaded to unstable very soon. These new versions will make Ruby 1.9
the default Ruby interpreter on Debian systems, i.e. when users install
the `ruby` package, they will actually get Ruby 1.9 instead of Ruby 1.8.
Also, when both Ruby 1.9 (ruby1.9.1) and Ruby 1.8 (ruby1.8) are
installed, Ruby 1.9 binaries will have a higher priority on the
alternatives system, so that the programs `ruby`, `gem`, `irb` etc will
by default point to their Ruby 1.9 versions.

We do not expect this transition to be too traumatic, as we will explain

# What it means for users

/usr/bin/ruby and associated binaries (/usr/bin/irb, /usr/bin/gem, etc)
will by default point to their 1.9 variants. You may have code that
depends on the fact the /usr/bin/ruby and related binaries point to
their 1.8 variants, maybe because of local Ruby applications that are
not compatible with Ruby 1.9, or because of applications that depend on
locally-installed packages (for example, packages installed using

There are some options here:

* Change shebang lines to use /usr/bin/ruby1.8 instead of /usr/bin/ruby.
* Switch your system to use ruby1.8 as the system Ruby interpreter, by
  installing the `ruby-switch` package and running `ruby-switch --set
  ruby1.8`.  This will change the Ruby-related alternatives entries
  (currently `ruby` and several slave entries, and `gem`) to use Ruby

More information for Ruby users can be obtained at the Debian

[1] http://wiki.debian.org/Ruby

# What it means for package maintainers

If you maintain a program that is written in Ruby and it is not
compatible with Ruby 1.9, then you should change shebang lines to use
`/usr/bin/ruby1.8` instead of `/usr/bin/ruby`, and make your package
depend explicitly on `ruby1.8`.

Both programs and libraries should be updated [2] to use the new Ruby
policy, which basically means that:

* Packages that work with any Ruby version must depend on
  `ruby | ruby-interpreter` instead of just `ruby`.
* Ruby library code must be installed under /usr/lib/ruby/vendor_ruby
* instead of /usr/lib/ruby/{1.8,1.9.1}.
* Library packages must be named ruby-$foo instead of lib$foo-ruby{,1.8,1.9.1}
* A library package called ruby-$foo must install code for all supported
  Ruby versions, and transitional packages for the old
  lib$foo-ruby{,1.8,1.9.1} packages must be provided. These transitional
  packages can be dropped on Wheezy+1.

[2] https://lists.debian.org/debian-ruby/2012/04/msg00066.html

The easiest way to support the new Ruby policy is to use gem2deb [3],
our new Ruby packaging helper. It is not mandatory, though, and as long
as packages follow the new Debian Ruby policy, everything is good.

[3] http://packages.debian.org/gem2deb

# Current state of the transition to the new policy

The Debian/Ruby Extras team [4] has transitioned all its packages
(except for some that are still stuck in NEW) to support the new policy
(i.e. changed package names and install locations). There are however
still quite some source packages not maintained by the team that still
provide binary packages called lib$foo-ruby{,1.8,1.9.1} (52) or install
in /usr/lib/ruby/{,1.8,1.9.1} (91).  See also [5] for an overview (note
that the list contains a few false positives).  The Debian/Ruby Extras
team is willing to help out with updating the packages to the new
policy. We will start filing bugs against non-migrated packages very

[4] http://wiki.debian.org/Teams/Ruby
[5] http://pkg-ruby-extras.alioth.debian.org/wheezy/details.html

Since most of the packages are already transitioned to the new policy,
that means they should have been already at least tested against Ruby
1.9. In a relatively small number of cases, packages that were
incompatible with Ruby 1.9 were already marked as such. For this reason
we believe that this switch to Ruby 1.9 as default is not going to be
too painful.

# The future of Ruby 1.8 in Debian

Ruby 1.8 will be available during the entire Debian Wheezy life cycle.

Upstream plans to cease bug fix support for RUby 1.8 in June 2012, and
security support on June 2013 [6]. That means will already not count on
upstream support for a good part of the Wheezy life time, and that's
going to be difficult. Keeping Ruby 1.8 past Wheezy will thus be

[6] http://www.ruby-lang.org/en/news/2011/10/06/plans-for-1-8-7/

Let's make it very clear: *Wheeze+1 will not contain Ruby 1.8*. Expect
it to be removed very early in the release cycle.

# Get in touch

If you have questions or need help adapting your package, feel free to
get in touch with the Ruby team by e-mail through
debian-ruby@lists.debian.org or drop by #debian-ruby on IRC.

For the Ruby team,

Antonio Terceiro <terceiro@debian.org>

Attachment: signature.asc
Description: Digital signature

Reply to: