On Tue, 10 Dec 2013 11:06:19 -0500, Michael Orlitzky wrote:

> On 12/10/2013 10:19 AM, Grant Edwards wrote:
>> 
>> I understand that portage defaults to installing multiple versions (of
>> Ruby, Python, and probably other stuff).  What I don't understand it
>> _why_.  If none of the ebuilds specify q version, then they presumably
>> will work with any availble version -- so why not just install one
>> version?
>> 
> So why is the RUBY_TARGETS default the way it is? I can't speak for the
> Ruby team, but it was most likely chosen as the upgrade path that causes
> the least pain. It's not perfect, as you've seen, but different parts of
> the Ruby ecosystem move at a different pace, and you have to make them
> all place nice.

I can speak for the ruby team :-)  We have RUBY_TARGETS="ruby18 ruby19" 
as the default because ruby18 used to be the default and recommended ruby 
and now ruby19 is. By adding both we can make the transformation mostly 
seamless. So why is ruby18 *still* there? Because, if we remove it, you 
must do an 'emerge --changed-use' run to forcefully uninstall all the 
ruby18 code. This is similar to the recent python3_2 to python3_3 
transition. I'm not a big fan of that approach, so instead we hoped to be 
able to just mask ruby18 given that it is no longer supported and just 
make it go away quietly, like we did with ree18 (Ruby Enterprise Edition).

If people here indicate that running 'emerge --changed-use' is no big 
deal and I'm making a mountain out of a molehill then we can reconsider 
that approach. We'll face the same situation soon with ruby19 and ruby20, 
so knowing what people prefer is helpful.

> During a transition period like this, various upstreams release a bunch
> of crap with circular or conflicting dependencies that happen to work on
> their machines because nobody is using a real package manager. The fact
> that it works as well as it does is a miracle. If you don't want all
> three versions of Ruby on your machine, try setting e.g.
> RUBY_TARGETS="ruby19". It probably won't work, but that's because some
> package has troublesome dependencies, not because we're handling it
> wrong.

It should work (I have some machines with that setting). Two things to 
keep in mind: you are now off the default settings, so you will need to 
manage new ruby targets yourself. You will also still get the ruby20 core 
installed for the moment due to weird dependency issues with some 
packages. This will get rectified when we add ruby20 to the default 
RUBY_TARGETS.

If you want just a single RUBY_TARGET then right now ruby19 is the one to 
use, judging by this graph: http://moving-innovations.com/~graaff/
targets.svg

Hans



Reply via email to