Re: Ruby changes for Wheezy
On 04/03/11 at 14:00 +0100, Josselin Mouette wrote:
> Le vendredi 04 mars 2011 à 11:16 +0100, Stefano Zacchiroli a écrit :
> > === Use alternatives to switch between Ruby implementations ===
> > There is a huge demand (see
> > [[http://bugs.debian.org/cgi-bin/bugreport.cgi?bug=548917|#548917]])
> > for using alternatives to switch between Ruby implementations. This
> > would provide a way to mimic what RVM provides in a cleaner way, and
> > will help the Ruby community with moving to 1.9.x or other
> > implementations.
> I think this would be asking for a disaster. A given version of the
> distribution should provide a given version of /usr/bin/ruby. Otherwise
> you’re just going to see third-party software (and often Debian
> packages) break in horrible ways.
> Let’s say for example that a script has a #!/usr/bin/ruby shebang, and
> uses the foo module. The package Depends: ruby, ruby-foo. In turn, this
> will pull ruby1.8-foo.
> Now let’s say someone installs it and then installs ruby1.9.1, and
> selects it as the default ruby version. Now ruby1.9.1-foo is not
> installed and you’re doomed.
> In short: just because many people ask for it doesn’t mean it’s a good
Yeah, I know. But I think that we should do what is best for our users,
even if it looks shockingly dangerous from our POV.
Also, while we will provide the capability to switch between ruby
versions using alternatives, it will be advertised that if you do that,
it's your job to install additional dependencies.
> > * pure-ruby libs must produce a single binary package named
> > '''ruby-foo'''
> > * libraries with both pure-Ruby and native code must be handled like
> > this:
> Looks correct to me, but it would probably be easier to do like with
> Python: put everything in a single package, de-duplicating data between
> versions. This way transitions are much smoother.
Sorry, could you explain how it works in python, when a given binary
package contains stuff for both python 2.6 and 2.7, for example? How do
you manage the Depends: line? (Pointing me to a good example would work,