Gentoo Archives: gentoo-desktop

From: Duncan <1i5t5.duncan@×××.net>
To: gentoo-desktop@l.g.o
Subject: [gentoo-desktop] Re: I need an explanation
Date: Thu, 20 May 2010 06:18:02
Message-Id: pan.2010.05.20.11.16.50@cox.net
In Reply to: Re: [gentoo-desktop] I need an explanation by Lindsay Haisley
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