Gentoo Archives: gentoo-amd64

From: Duncan <1i5t5.duncan@×××.net>
To: gentoo-amd64@l.g.o
Subject: [gentoo-amd64] Re: Major update problem
Date: Tue, 08 Feb 2011 03:02:54
Message-Id: pan.2011.02.08.02.45.24@cox.net
In Reply to: Re: [gentoo-amd64] Major update problem by Paul Stear
1 Paul Stear posted on Mon, 07 Feb 2011 13:27:06 +0000 as excerpted:
2
3 > On Monday 07 February 2011 12:27:16 Paul Stear wrote:
4 >> Hi,
5 >> I am now using a new motherboard and processor - change from amd duo to
6 >> intel quad.
7 >> All seems to be working well except my previous post ref eth3.
8 >> However, I am having problems updating my programs.
9 >> eix-sync went well and portage updated to 2.1.9.37
10 >> I then do an emerge -auvtDN --keep-going world and I get hundreds of
11 >> blocked packages for kde e.g.
12 >> [blocks B ] kde-base/kwrite:4.5[-kdeprefix] ("kde-base/kwrite:4.5[-
13 >> kdeprefix]" is blocking kde-base/kwrite-4.6.0)
14 >>
15 >> I seem to have the current kde 4.5.5 required by @selected e.g.
16 >>
17 >> (kde-base/kdebase-meta-4.5.5, installed) pulled in by
18 >> kde-base/kdebase-meta required by @selected
19 >> kde-base/kdebase-meta:4.5 required by @selected
20 >>
21 >> What is @selected, I have never heard of this before, do I need to
22 >> change something? I can't seem to find this referenced in any
23 >> documentation.
24
25 The portage 2.2 series has had sets support for quite some time, but it's
26 new to the 2.1 series... new enough this is the first I'd heard of sets
27 support being unmasked to ~arch (I've been running the masked 2.2 series),
28 tho I've not synced since Feb 4.
29
30 You'll want to read up on sets support. In short, the @ prefix indicates
31 a set, with @system and @world special-cased for backward compatibility to
32 be usable without the @ (so as simply system and world, the way it has
33 worked for years) as well. @selected is /just/ the stuff in world,
34 excluding system, while @world continues to include @system as well, just
35 like it always did before the @ notation.
36
37 What sets makes possible, tho, is essentially, subsets of the world file
38 treated as a single unit, aka "set". An example of how it can be used are
39 the kde sets, long kept in the overlay until an unmasked portage with sets
40 support hit the tree (sets support was masked for quite some time due to
41 controversy over the exact format, as paludis apparently implemented sets
42 first and a bit differently), but, now with an at least ~arch portage with
43 sets, presumably the kde sets will be (are? as I said I've not synced in a
44 few days) in-tree as well, and one could emerge @kdebase, for instance, to
45 get the whole set of packages found in the kdebase monolithic tarball from
46 upstream.
47
48 Or take this as a sysadmin example: I have no world file at all.
49 Instead, portage tracks the sets I have installed in the world_sets file,
50 and I edit individual sets by function, kept in /etc/portage/sets,
51 instead. Here's my listing. (JED are my initials, used here to ensure
52 that any sets I create manually don't get confused with possible tree
53 sets. My kde sets are similar to the ones from the overlay, but with a
54 few packages commented as unneeded, so they don't get installed.) The
55 contents of a couple of the sets files follow, as examples:
56
57 $>>cat /var/lib/portage/world_sets
58 @jed.admin
59 @jed.bible
60 @jed.dev
61 @jed.fonts
62 @jed.kde.base.kdeartwork
63 @jed.kde.base.kdebase.apps
64 @jed.kde.base.kdebase.runtime
65 @jed.kde.base.kdebase.workspace
66 @jed.kde.base.kdegames
67 @jed.kde.base.kdegraphics
68 @jed.kde.base.kdemultimedia
69 @jed.kde.base.kdeoptional
70 @jed.kde.base.kdepim
71 @jed.kde.base.kdetoys
72 @jed.kde.base.kdeutils
73 @jed.kde.misc
74 @jed.kde.plasmoids
75 @jed.media
76 @jed.misc
77 @jed.net
78 @jed.portage
79 @jed.utils
80 @jed.xorg
81
82 $>>ls -1 /etc/portage/sets
83 jed.admin
84 jed.bible
85 jed.dev
86 jed.fonts
87 jed.kde.base.kdeartwork
88 jed.kde.base.kdebase.apps
89 jed.kde.base.kdebase.runtime
90 jed.kde.base.kdebase.workspace
91 jed.kde.base.kdegames
92 jed.kde.base.kdegraphics
93 jed.kde.base.kdemultimedia
94 jed.kde.base.kdeoptional
95 jed.kde.base.kdepim
96 jed.kde.base.kdetoys
97 jed.kde.base.kdeutils
98 jed.kde.misc
99 jed.kde.plasmoids
100 jed.media
101 jed.misc
102 jed.net
103 jed.portage
104 jed.qt4.4.7.0
105 jed.qt4.4.7.1
106 jed.qt4.main
107 jed.utils
108 jed.xorg
109
110 $>>cat /etc/portage/sets/jed.xorg
111 media-video/xvattr
112 x11-apps/mesa-progs
113 x11-apps/xdpyinfo
114 x11-apps/xev
115 x11-apps/xfontsel
116 x11-apps/xkill
117 x11-apps/xmodmap
118 x11-apps/xvidtune
119 x11-apps/xwininfo
120 x11-base/xorg-server
121 x11-misc/sux
122 x11-themes/gentoo-xcursors
123 x11-themes/xcursor-themes
124
125 $>>cat /etc/portage/sets/jed.kde.base.kdeoptional
126
127 #kde-base/kdelirc
128 kde-base/kfloppy
129 #kde-base/kppp
130 #kde-base/policykit-kde
131
132 $>>
133
134 See? Each set is basically a subset of the much longer list formerly in
135 my worldfile. Put all the worldfile packages in sets, list them in the
136 world_sets file, and the worldfile itself can be emptied! =:^)
137
138 Note the comment hashes in that last one. Every time kde 4.x bumps (so
139 4.5 to 4.6, but not 4.5.4 to 4.5.5, for example), I diff my jed.kde.*
140 files against the ones (that were) in the overlay, seeing what got added
141 or removed, and doing the same to my sets. Thus, I comment lines for
142 packages I don't want to install, instead of removing them, so the side-by-
143 side diffs line up better and it's easier to see what changed between the
144 two versions.
145
146 As I said, I don't (normally) have anything in my world file at all --
147 it's now all in the individual sets I've setup. I set it up this way when
148 I was setting up my netbook, a bit over a year ago (sets have been
149 available in the 2.2 series that long), as sorting my (previous) world
150 file into sets based on functional categories, and then going thru each
151 one to see what changes I wanted to make to that category as opposed to
152 the list on my workstation, was far easier than trying to tackle the
153 original huge world file in one go.
154
155 However, now that I have it setup that way, I do use the world file as a
156 sort of "package purgatory", when I'm testing something new. My default
157 emerge scripts always use -1, so the package isn't added to my world file
158 immediately. I can then test the package a bit and if I'm sure I want to
159 keep it, I add it to the appropriate set. If however I want to test it a
160 bit more, I add it to the world file instead. That way, portage knows I
161 want to track upgrades if they appear, and won't remove the package when I
162 --depclean (which I do after every update session, keeping the cruft from
163 building up), but the package is still in the "purgatory" of the world
164 file, so I know it's still in testing. After a few days or weeks, I'll
165 then either emerge -C the package, thus removing it from the world file,
166 or move the entry to the appropriate set, depending on whether I've
167 decided to keep the package permanently or not.
168
169 > Sorry to reply to my own post but it seems that my world file had all of
170 > the kde programs listed with ":4.5"
171 > I don't know how this has happened but I removed the :4.5 from the lines
172 > and now if I run an emerge I get the following:-
173 >
174 > Total: 268 packages (24 upgrades, 12 new, 228 in new slots, 4
175 > reinstalls, 230 uninstalls), Size of downloads: 424,321 kB
176 > Conflict: 459 blocks
177 >
178 > Would you like to merge these packages? [Yes/No]
179 >
180 > Why would 228 packages be installed in new slots?
181
182 Gentoo/kde (which is where most of those 228 new-slots are, if you look)
183 uses the slots for (at least) two reasons.
184
185 First, there's the (unsupported and normally use.masked, but used for
186 testing) kdeprefix USE flag, which allows multiple slots to be installed
187 at the same time, thus allowing testing of unstable versions while the
188 stable version remains actually installed and used for normal tasks. The
189 reason this is unsupported is that there's a number of complications and
190 breakages introduced by this flag, as kde4 really isn't designed to work
191 this way. The problems can normally be worked around, but the hassle and
192 technical knowledge level for doing so is such that they don't support it
193 for normal users, thus the flag is use.masked and unmasking/activating it
194 unsupported, but it remains available for those, primarily gentoo/kde devs
195 using it as I said for testing, that want to risk it and can tolerate a
196 bit of breakage and hassle in ordered to do so.
197
198 Second, slot-specified dependencies vastly simplify things, as it's then
199 possible to depend on, for example, kdelibs:4.6 instead of specifying all
200 the individual 4.6 versions (including 4.5.98, etc, prereleases, in the
201 4.6 slot but that =kdelibs-4.6* wouldn't work with).
202
203 Complicating things especially for the listing is that the various slots
204 generally block each other, as well, tho as explained above, unmasking and
205 setting USE=kdeprefix would eliminate most of the blockages... at the
206 expense of various other breakages, thus the use.mask and blockages in the
207 first place.
208
209 Granted, hundreds of package-blocks looks overwhelming at first, but once
210 you understand what's actually happening and why, fortunately, it's
211 generally much simpler to fix than all those hundreds of blocks would seem
212 to suggest at first glance. In your case, it was a simple matter of
213 removing those slot-specifiers in your world file. =:^)
214
215 --
216 Duncan - List replies preferred. No HTML msgs.
217 "Every nonfree program has a lord, a master --
218 and if you use the program, he is your master." Richard Stallman

Replies

Subject Author
[gentoo-amd64] Re: Major update problem Jonathan Callen <abcd@g.o>