Mailing List Archive

I need an explanation
Would someone please explain to me the following message from emerge,
and tell me what I have to do to resolve it? This is just one of a list
of such messages I'm getting.

!!! Multiple package instances within a single package slot have been pulled
!!! into the dependency graph, resulting in a slot conflict:

dev-python/gnome-vfs-python:2

('installed', '/', 'dev-python/gnome-vfs-python-2.26.1', 'nomerge') pulled in by
>=dev-python/gnome-vfs-python-2.26.1 required by ('installed', '/', 'dev-python/libgnome-python-2.26.1', 'nomerge')
(and 2 more)

('ebuild', '/', 'dev-python/gnome-vfs-python-2.22.3', 'merge') pulled in by
~dev-python/gnome-vfs-python-2.22.3 required by ('installed', '/', 'dev-python/gnome-python-2.22.3', 'nomerge')
(and 2 more)

--
Lindsay Haisley | "In an open world, | PGP public key
FMP Computer Services | who needs Windows | available at
512-259-1190 | or Gates" | http://pubkeys.fmp.com
http://www.fmp.com | |
Re: I need an explanation [ In reply to ]
100518 Lindsay Haisley wrote:
> what I have to do to resolve it?
>> !!! Multiple package instances within a single package slot have been pulled
>> !!! into the dependency graph, resulting in a slot conflict:
>> dev-python/gnome-vfs-python:2
>> ('installed', '/', 'dev-python/gnome-vfs-python-2.26.1', 'nomerge') pulled in by
>> >=dev-python/gnome-vfs-python-2.26.1 required by ('installed', '/', 'dev-python/libgnome-python-2.26.1', 'nomerge')
>> (and 2 more)
>> ('ebuild', '/', 'dev-python/gnome-vfs-python-2.22.3', 'merge') pulled in by
>> ~dev-python/gnome-vfs-python-2.22.3 required by ('installed', '/', 'dev-python/gnome-python-2.22.3', 'nomerge')
>> (and 2 more)

A quick suggestion by someone who doesn't use any of these is
that you have incompatible versions of Libgnome-python & Gnome-python:
the latter is a meta-pkg & an earlier version, so try unmerging it.

--
========================,,============================================
SUPPORT ___________//___, Philip Webb
ELECTRIC /] [] [] [] [] []| Cities Centre, University of Toronto
TRANSIT `-O----------O---' purslowatchassdotutorontodotca
Re: I need an explanation [ In reply to ]
On Tue, 2010-05-18 at 19:43 -0400, Philip Webb wrote:
> 100518 Lindsay Haisley wrote:
> > what I have to do to resolve it?
> >> !!! Multiple package instances within a single package slot have been pulled
> >> !!! into the dependency graph, resulting in a slot conflict:
> >> dev-python/gnome-vfs-python:2
> >> ('installed', '/', 'dev-python/gnome-vfs-python-2.26.1', 'nomerge') pulled in by
> >> >=dev-python/gnome-vfs-python-2.26.1 required by ('installed', '/', 'dev-python/libgnome-python-2.26.1', 'nomerge')
> >> (and 2 more)
> >> ('ebuild', '/', 'dev-python/gnome-vfs-python-2.22.3', 'merge') pulled in by
> >> ~dev-python/gnome-vfs-python-2.22.3 required by ('installed', '/', 'dev-python/gnome-python-2.22.3', 'nomerge')
> >> (and 2 more)
>
> A quick suggestion by someone who doesn't use any of these is
> that you have incompatible versions of Libgnome-python & Gnome-python:
> the latter is a meta-pkg & an earlier version, so try unmerging it.

I'll take a look at this, but I'm looking for a broader understanding of
this kind of message since I'm getting a number of them (this is only
one set). What's the difference between "required by" and "pulled in
by"? Are these message documented and explained somewhere?

--
Lindsay Haisley | "Real programmers use butterflies"
FMP Computer Services | - xkcd
512-259-1190 |
http://www.fmp.com |
Re: I need an explanation [ In reply to ]
Lindsay Haisley posted on Wed, 19 May 2010 13:52:59 -0500 as excerpted:

> On Tue, 2010-05-18 at 19:43 -0400, Philip Webb wrote:
>> 100518 Lindsay Haisley wrote:
>> > what I have to do to resolve it?
>> >> !!! Multiple package instances within a single package slot have
>> >> been pulled !!! into the dependency graph, resulting in a slot
>> >> conflict: dev-python/gnome-vfs-python:2
>> >> ('installed', '/', 'dev-python/gnome-vfs-python-2.26.1',
>> >> 'nomerge') pulled in by
>> >> >=dev-python/gnome-vfs-python-2.26.1 required by ('installed',
>> >> >'/', 'dev-python/libgnome-python-2.26.1', 'nomerge')
>> >> (and 2 more)
>> >> ('ebuild', '/', 'dev-python/gnome-vfs-python-2.22.3', 'merge')
>> >> pulled in by
>> >> ~dev-python/gnome-vfs-python-2.22.3 required by ('installed',
>> >> '/', 'dev-python/gnome-python-2.22.3', 'nomerge') (and 2 more)
>>
>> A quick suggestion by someone who doesn't use any of these is that you
>> have incompatible versions of Libgnome-python & Gnome-python: the
>> latter is a meta-pkg & an earlier version, so try unmerging it.
>
> I'll take a look at this, but I'm looking for a broader understanding of
> this kind of message since I'm getting a number of them (this is only
> one set). What's the difference between "required by" and "pulled in
> by"? Are these message documented and explained somewhere?

I don't know that they're documented/explained anywhere formally, as the
additional verbosity is relatively new to portage. Previously, it would
have quit with far less explanation, leaving the user to work it out for
themselves what was going on. Either that, or it would have simply
upgraded, then wanted to downgrade on the next run, then wanted to upgrade
again, etc. I remember such endless upgrade/downgrade loops, and believe
me, this is better, at least providing *SOME* explanation, and preventing
the loop before it starts.

That said, as I understand it, these are in the context of the depgraph
portage is trying to construct to satisfy the new merge request, while
continuing to satisfy the requirements of existing already merged packages
as well.

In that context, "pulled in by" refers to the specific dependency as
written in the ebuild (thus the ">=" bit, the dependency is requiring a
certain version or higher), while "required by" refers to the ebuild which
contains that dependency (a specific ebuild, thus a specific package
version), that portage is evaluating while trying to resolve its depgraph
successfully, balancing what's currently installed and what is trying to
be installed.

So what it's saying:

>> >> conflict: dev-python/gnome-vfs-python:2

The name and slot of the package it's trying to resolve the conflict on.

Now the first candidate:

>> >> ('installed', '/', 'dev-python/gnome-vfs-python-2.26.1',
>> >> 'nomerge')

You currently have version gnome-vfs-python-2.26.1 installed
(currently installed, to root, package name and version, won't be merged).

(The "to root" bit you can ignore. That's there to clarify things in case
of advanced portage usage, where it may be installing to some place other
than the active system. It can be ignored in the below as well.)

>> >> pulled in by >=dev-python/gnome-vfs-python-2.26.1

The dependency that is actually pulling in that version.

It's wanting version 2.26.1 or higher (and from the "nomerge" and version
in the clause above, we see it has exactly 2.26.1, dependency currently
fulfilled)

>> >> required by ('installed', >'/',
>> >> 'dev-python/libgnome-python-2.26.1', 'nomerge')

dev-python/libgnome-python-2.26.1 is the actual ebuild containing the
above "pulled in by". It is:

(currently installed, to root, package name and version, won't be merged).

>> >> (and 2 more)

Two additional packages have a similar dependency, also met by what's
currently installed.

That's the first candidate, here's the second:

>> >> ('ebuild', '/', 'dev-python/gnome-vfs-python-2.22.3', 'merge')

It wants to install version 2.22.3
(ebuild so not yet installed, to root, package name and version, would be
merged)

>> >> pulled in by ~dev-python/gnome-vfs-python-2.22.3

The actual dependency trying to pull it in. Here we see the dependency
wants (upstream) version 2.22.3 specifically, except that all (gentoo) -rX
revisions of said upstream version are allowed (that's what the ~ means).
(And from the "merge" and version named in the clause above it, we see
this dependency is NOT currently fullfilled, as it wants to merge it.)

>> >> required by ('installed', '/',
>> >> 'dev-python/gnome-python-2.22.3', 'nomerge')

dev-python/gnome-python-2.22.3 is the actual ebuild containing the above
"pulled in by". It is:

(currently installed, to root, package name and version, won't be merged)

>> >> (and 2 more)

Again, two additional packages have a similar dependency, also currently
unmet by what's currently installed.

The conflict is that both 2.22.3 and 2.26.1 are in slot 2, and can't be
installed together, yet one dependency is for >=2.26.1, thus eliminating
2.22.3, while the other is for 2.22.3 specifically, thus eliminating
2.26.1.

Note that both of these are requirements of currently installed (nomerge)
packages, so the conflict must be new -- the dependencies on one or the
other of the packages apparently changed since one or the other was
installed. Probably, someone noticed a problem, filed a bug, and the
resolution was to tighten up the dependencies so the two sets of packages
couldn't be installed together. As with Philip, I don't have these
packages installed here (I'm a kde guy, preferring to keep gnome as far
from my system as possible, upstream kde4 has enough problems to deal
with, tho the gentoo/kde guys do a great job with what upstream gives
them), but his suggestion that gnome-python is an earlier virtual package
no longer needed, does seem consistent with the facts as I see them here
-- it IS an earlier version, 2.22.3, while you're working with 2.26.1, now
(that assumes the version numbers are related, which they seem to be).

A hint, take it or leave it at your option. This sort of problem is going
to be more frequent and more confusing to resolve when it occurs if you
don't both keep your system fully updated (not just leaves, but adding
--deep to your --update), and regularly remove cruft (using --newuse with
your updates as well, then doing revdep-rebuild and emerge --depclean).

In particular, it's my guess that this apparently outdated virtual,
gnome-python, would have been removed as unneeded along with other
existing 2.22.3 packages when 2.26 was installed, had you been regularly
running emerge --depclean, since removing package no longer required by
stuff in @system and @world is what it /does/. Then you'd have not gotten
to this point, since the straggly bits of 2.22.3 would have been removed
with the --depclean after 2.26 was installed, so portage would have never
been trying to satisfy dependencies with packages from both installed at
the same time.

Of course, to safely run --depclean, you have to have been keeping up with
your --newuse and revdep-rebuilds. Additionally, if you haven't been
running it routinely, there will probably be a number of packages in the
first --depclean --pretend run (you DO run emerge with --ask or --pretend
first, right?) that you actually want to keep, and should add to your
world file using emerge --select --noreplace, before running --depclean
for real, without the --pretend, or going ahead with --ask.

The --update --deep simply tells portage to consider deep dependencies for
update as well as stuff in the world file. This will mean a few more
library and etc updates before absolutely necessary, but by keeping
current with them, it'll also mean fewer headaches when they ARE updated,
because the version gaps between updates will be smaller. The tradeoff is
more merging that the computer can handle itself, for less problems where
it can't handle it automatically and needs your help to resolve a problem.

Of course, the other thing is not to let a system get too outdated between
syncs and updates. From my observations both in my own use and from the
comments of others, it seems that once a month updates are probably as
long as you can go between them, without starting to have additional
problems because the updates get so large they are difficult to handle and
to pin down problems when they do occur. I've seen others say they have
that problem if they let the gap between updates grow to more than once a
week, but these guys are obviously used to smaller updates in the first
place. Certainly, tho, I'd say if you're letting it grow to two months or
more between updates, you're just making more headaches for yourself when
you /do/ update, as the updates aren't likely to go as smoothly, both
because of the number of them, and because the version jumps will be
higher. And, pinning down problems when you do have them, gets much
harder with more updates and bigger gaps, as well.

So for Gentoo, I'd recommend updates at least once a month (consider once
a week if you can), with --deep --newuse, and consistently running
revdep-rebuild and emerge --depclean afterward (with the caveat about the
first time you depclean in awhile as mentioned above). There will still
be the occasional issue like the one you mentioned, but they'll be far
fewer between, and when they happen, others will be seeing them too, so
it'll be far easier to get help in fixing them if needed.

But of course, it's your system not mine, and if that doesn't fit your
style, feel free to do it as you like. That's what's nice about Gentoo,
it gives you a lot of flexibility in that regard. =:^)

--
Duncan - List replies preferred. No HTML msgs.
"Every nonfree program has a lord, a master --
and if you use the program, he is your master." Richard Stallman