1 |
Lindsay Haisley posted on Wed, 19 May 2010 13:52:59 -0500 as excerpted: |
2 |
|
3 |
> On Tue, 2010-05-18 at 19:43 -0400, Philip Webb wrote: |
4 |
>> 100518 Lindsay Haisley wrote: |
5 |
>> > what I have to do to resolve it? |
6 |
>> >> !!! Multiple package instances within a single package slot have |
7 |
>> >> been pulled !!! into the dependency graph, resulting in a slot |
8 |
>> >> conflict: dev-python/gnome-vfs-python:2 |
9 |
>> >> ('installed', '/', 'dev-python/gnome-vfs-python-2.26.1', |
10 |
>> >> 'nomerge') pulled in by |
11 |
>> >> >=dev-python/gnome-vfs-python-2.26.1 required by ('installed', |
12 |
>> >> >'/', 'dev-python/libgnome-python-2.26.1', 'nomerge') |
13 |
>> >> (and 2 more) |
14 |
>> >> ('ebuild', '/', 'dev-python/gnome-vfs-python-2.22.3', 'merge') |
15 |
>> >> pulled in by |
16 |
>> >> ~dev-python/gnome-vfs-python-2.22.3 required by ('installed', |
17 |
>> >> '/', 'dev-python/gnome-python-2.22.3', 'nomerge') (and 2 more) |
18 |
>> |
19 |
>> A quick suggestion by someone who doesn't use any of these is that you |
20 |
>> have incompatible versions of Libgnome-python & Gnome-python: the |
21 |
>> latter is a meta-pkg & an earlier version, so try unmerging it. |
22 |
> |
23 |
> I'll take a look at this, but I'm looking for a broader understanding of |
24 |
> this kind of message since I'm getting a number of them (this is only |
25 |
> one set). What's the difference between "required by" and "pulled in |
26 |
> by"? Are these message documented and explained somewhere? |
27 |
|
28 |
I don't know that they're documented/explained anywhere formally, as the |
29 |
additional verbosity is relatively new to portage. Previously, it would |
30 |
have quit with far less explanation, leaving the user to work it out for |
31 |
themselves what was going on. Either that, or it would have simply |
32 |
upgraded, then wanted to downgrade on the next run, then wanted to upgrade |
33 |
again, etc. I remember such endless upgrade/downgrade loops, and believe |
34 |
me, this is better, at least providing *SOME* explanation, and preventing |
35 |
the loop before it starts. |
36 |
|
37 |
That said, as I understand it, these are in the context of the depgraph |
38 |
portage is trying to construct to satisfy the new merge request, while |
39 |
continuing to satisfy the requirements of existing already merged packages |
40 |
as well. |
41 |
|
42 |
In that context, "pulled in by" refers to the specific dependency as |
43 |
written in the ebuild (thus the ">=" bit, the dependency is requiring a |
44 |
certain version or higher), while "required by" refers to the ebuild which |
45 |
contains that dependency (a specific ebuild, thus a specific package |
46 |
version), that portage is evaluating while trying to resolve its depgraph |
47 |
successfully, balancing what's currently installed and what is trying to |
48 |
be installed. |
49 |
|
50 |
So what it's saying: |
51 |
|
52 |
>> >> conflict: dev-python/gnome-vfs-python:2 |
53 |
|
54 |
The name and slot of the package it's trying to resolve the conflict on. |
55 |
|
56 |
Now the first candidate: |
57 |
|
58 |
>> >> ('installed', '/', 'dev-python/gnome-vfs-python-2.26.1', |
59 |
>> >> 'nomerge') |
60 |
|
61 |
You currently have version gnome-vfs-python-2.26.1 installed |
62 |
(currently installed, to root, package name and version, won't be merged). |
63 |
|
64 |
(The "to root" bit you can ignore. That's there to clarify things in case |
65 |
of advanced portage usage, where it may be installing to some place other |
66 |
than the active system. It can be ignored in the below as well.) |
67 |
|
68 |
>> >> pulled in by >=dev-python/gnome-vfs-python-2.26.1 |
69 |
|
70 |
The dependency that is actually pulling in that version. |
71 |
|
72 |
It's wanting version 2.26.1 or higher (and from the "nomerge" and version |
73 |
in the clause above, we see it has exactly 2.26.1, dependency currently |
74 |
fulfilled) |
75 |
|
76 |
>> >> required by ('installed', >'/', |
77 |
>> >> 'dev-python/libgnome-python-2.26.1', 'nomerge') |
78 |
|
79 |
dev-python/libgnome-python-2.26.1 is the actual ebuild containing the |
80 |
above "pulled in by". It is: |
81 |
|
82 |
(currently installed, to root, package name and version, won't be merged). |
83 |
|
84 |
>> >> (and 2 more) |
85 |
|
86 |
Two additional packages have a similar dependency, also met by what's |
87 |
currently installed. |
88 |
|
89 |
That's the first candidate, here's the second: |
90 |
|
91 |
>> >> ('ebuild', '/', 'dev-python/gnome-vfs-python-2.22.3', 'merge') |
92 |
|
93 |
It wants to install version 2.22.3 |
94 |
(ebuild so not yet installed, to root, package name and version, would be |
95 |
merged) |
96 |
|
97 |
>> >> pulled in by ~dev-python/gnome-vfs-python-2.22.3 |
98 |
|
99 |
The actual dependency trying to pull it in. Here we see the dependency |
100 |
wants (upstream) version 2.22.3 specifically, except that all (gentoo) -rX |
101 |
revisions of said upstream version are allowed (that's what the ~ means). |
102 |
(And from the "merge" and version named in the clause above it, we see |
103 |
this dependency is NOT currently fullfilled, as it wants to merge it.) |
104 |
|
105 |
>> >> required by ('installed', '/', |
106 |
>> >> 'dev-python/gnome-python-2.22.3', 'nomerge') |
107 |
|
108 |
dev-python/gnome-python-2.22.3 is the actual ebuild containing the above |
109 |
"pulled in by". It is: |
110 |
|
111 |
(currently installed, to root, package name and version, won't be merged) |
112 |
|
113 |
>> >> (and 2 more) |
114 |
|
115 |
Again, two additional packages have a similar dependency, also currently |
116 |
unmet by what's currently installed. |
117 |
|
118 |
The conflict is that both 2.22.3 and 2.26.1 are in slot 2, and can't be |
119 |
installed together, yet one dependency is for >=2.26.1, thus eliminating |
120 |
2.22.3, while the other is for 2.22.3 specifically, thus eliminating |
121 |
2.26.1. |
122 |
|
123 |
Note that both of these are requirements of currently installed (nomerge) |
124 |
packages, so the conflict must be new -- the dependencies on one or the |
125 |
other of the packages apparently changed since one or the other was |
126 |
installed. Probably, someone noticed a problem, filed a bug, and the |
127 |
resolution was to tighten up the dependencies so the two sets of packages |
128 |
couldn't be installed together. As with Philip, I don't have these |
129 |
packages installed here (I'm a kde guy, preferring to keep gnome as far |
130 |
from my system as possible, upstream kde4 has enough problems to deal |
131 |
with, tho the gentoo/kde guys do a great job with what upstream gives |
132 |
them), but his suggestion that gnome-python is an earlier virtual package |
133 |
no longer needed, does seem consistent with the facts as I see them here |
134 |
-- it IS an earlier version, 2.22.3, while you're working with 2.26.1, now |
135 |
(that assumes the version numbers are related, which they seem to be). |
136 |
|
137 |
A hint, take it or leave it at your option. This sort of problem is going |
138 |
to be more frequent and more confusing to resolve when it occurs if you |
139 |
don't both keep your system fully updated (not just leaves, but adding |
140 |
--deep to your --update), and regularly remove cruft (using --newuse with |
141 |
your updates as well, then doing revdep-rebuild and emerge --depclean). |
142 |
|
143 |
In particular, it's my guess that this apparently outdated virtual, |
144 |
gnome-python, would have been removed as unneeded along with other |
145 |
existing 2.22.3 packages when 2.26 was installed, had you been regularly |
146 |
running emerge --depclean, since removing package no longer required by |
147 |
stuff in @system and @world is what it /does/. Then you'd have not gotten |
148 |
to this point, since the straggly bits of 2.22.3 would have been removed |
149 |
with the --depclean after 2.26 was installed, so portage would have never |
150 |
been trying to satisfy dependencies with packages from both installed at |
151 |
the same time. |
152 |
|
153 |
Of course, to safely run --depclean, you have to have been keeping up with |
154 |
your --newuse and revdep-rebuilds. Additionally, if you haven't been |
155 |
running it routinely, there will probably be a number of packages in the |
156 |
first --depclean --pretend run (you DO run emerge with --ask or --pretend |
157 |
first, right?) that you actually want to keep, and should add to your |
158 |
world file using emerge --select --noreplace, before running --depclean |
159 |
for real, without the --pretend, or going ahead with --ask. |
160 |
|
161 |
The --update --deep simply tells portage to consider deep dependencies for |
162 |
update as well as stuff in the world file. This will mean a few more |
163 |
library and etc updates before absolutely necessary, but by keeping |
164 |
current with them, it'll also mean fewer headaches when they ARE updated, |
165 |
because the version gaps between updates will be smaller. The tradeoff is |
166 |
more merging that the computer can handle itself, for less problems where |
167 |
it can't handle it automatically and needs your help to resolve a problem. |
168 |
|
169 |
Of course, the other thing is not to let a system get too outdated between |
170 |
syncs and updates. From my observations both in my own use and from the |
171 |
comments of others, it seems that once a month updates are probably as |
172 |
long as you can go between them, without starting to have additional |
173 |
problems because the updates get so large they are difficult to handle and |
174 |
to pin down problems when they do occur. I've seen others say they have |
175 |
that problem if they let the gap between updates grow to more than once a |
176 |
week, but these guys are obviously used to smaller updates in the first |
177 |
place. Certainly, tho, I'd say if you're letting it grow to two months or |
178 |
more between updates, you're just making more headaches for yourself when |
179 |
you /do/ update, as the updates aren't likely to go as smoothly, both |
180 |
because of the number of them, and because the version jumps will be |
181 |
higher. And, pinning down problems when you do have them, gets much |
182 |
harder with more updates and bigger gaps, as well. |
183 |
|
184 |
So for Gentoo, I'd recommend updates at least once a month (consider once |
185 |
a week if you can), with --deep --newuse, and consistently running |
186 |
revdep-rebuild and emerge --depclean afterward (with the caveat about the |
187 |
first time you depclean in awhile as mentioned above). There will still |
188 |
be the occasional issue like the one you mentioned, but they'll be far |
189 |
fewer between, and when they happen, others will be seeing them too, so |
190 |
it'll be far easier to get help in fixing them if needed. |
191 |
|
192 |
But of course, it's your system not mine, and if that doesn't fit your |
193 |
style, feel free to do it as you like. That's what's nice about Gentoo, |
194 |
it gives you a lot of flexibility in that regard. =:^) |
195 |
|
196 |
-- |
197 |
Duncan - List replies preferred. No HTML msgs. |
198 |
"Every nonfree program has a lord, a master -- |
199 |
and if you use the program, he is your master." Richard Stallman |