1 |
On 10/12/2013 17:19, Grant Edwards wrote: |
2 |
> On 2013-12-10, Hans de Graaff <graaff@g.o> wrote: |
3 |
>> On Mon, 09 Dec 2013 18:29:46 +0000, Grant Edwards wrote: |
4 |
>> |
5 |
>>> My routine more-or-less weekly update suddenly decided that it needed to |
6 |
>>> install 3 versions of Ruby along with ~50 other ruby-related packages. |
7 |
>>> This caused a bit of a problem, since those versions of Ruby can't |
8 |
>>> coexist: (something to do with tk and threads). |
9 |
>> |
10 |
>> There should not be a problem installing these versions at the same time, |
11 |
>> although perhaps with a specific combination of USE flags there might be |
12 |
>> issues. |
13 |
> |
14 |
> AFAICT, if you have a global "tk" USE flag, you can not have 1.8 |
15 |
> installed at the same time as 1.9 or 2.0. |
16 |
> |
17 |
>> Because ruby18 and ruby19 are specified in the default RUBY_TARGETS as |
18 |
>> defined in the profile. And due to the way the dependencies are specified |
19 |
>> in both webkit and thin-provisioning-tools it will additionally try to |
20 |
>> pull in ruby20 first. Hence: three versions. |
21 |
> |
22 |
> I understand that portage defaults to installing multiple versions (of |
23 |
> Ruby, Python, and probably other stuff). What I don't understand it |
24 |
> _why_. If none of the ebuilds specify q version, then they |
25 |
> presumably will work with any availble version -- so why not just |
26 |
> install one version? |
27 |
> |
28 |
|
29 |
|
30 |
It's probably the same reasoning as python. |
31 |
|
32 |
python has an eselect python module, ruby doesn't. But I presume ruby |
33 |
can be selected just like python can be. |
34 |
|
35 |
So you have multiple pythons on your system. Portage doesn't know why |
36 |
you did that, only that you did. It also doesn't know what python/ruby |
37 |
packages you may install later, only that you might. |
38 |
|
39 |
The only thing portage can do is assume you want everything to work |
40 |
under all installed interpreters. If you want to restrict the list of |
41 |
installed interpreters, use the relevant settings in make.conf. Python |
42 |
has PYTHON_TARGETS and SINGLE_PYTHON_TARGET for this, I don't know what |
43 |
the ruby equivalent is. |
44 |
|
45 |
This portage logic does actually make sense, it's the only thing that |
46 |
works sanely (other than refusing to do anything unless you explicitly |
47 |
name all desired interpreters). |
48 |
|
49 |
|
50 |
-- |
51 |
Alan McKinnon |
52 |
alan.mckinnon@×××××.com |