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

