"John P. Burkett" <burk...@uri.edu> posted 4a2bd1fa.6070...@uri.edu,
excerpted below, on  Sun, 07 Jun 2009 10:43:06 -0400:

> Thank you, Duncan, for your thorough explanation.  A few minutes ago I
> reran eix-sync, updated portage to version 2.1.6.13, and tried "emerge
> -D -uav world" and "emerge --pretend -NuD world".  With both versions of
> emerge, I still get the following messages:

[snip the blocks]
 
> Thus it appears that the blockage has to be resolved manually. Do you
> recommend unmerging kdelibs or the 15 packages that are blocking it?

It was in the longer post, but apparently got lost as a needle in a 
haystack...

What I'm saying is that the blocks DO STILL show up on --pretend (and --
ask) because it's reporting that there are blocks requiring something to 
be done (uninstalls or whatever).  However, most of the time, if you just 
do it (without the -p or saying y to -a), it'll go ahead and merge it 
anyway, taking care of the blocks when it gets to that specific point.

Or are you saying you told it to go ahead, and it wouldn't do so, 
spitting out the errors, even when you told it to?

If it's the latter, then the block is hard enough to resolve 
automatically that portage is taking the cautious approach and letting 
the admin tell it specifically what to do.  In that case, see below...

> The Gentoo handbook
> http://www.gentoo.org/doc/en/handbook/handbook-x86.xml?full=1#blocked
> says that the two options for fixing a blockage are to (1) "choose to
> not install" the blocked package, or (2) unmerge the blocking packages.

> Is the first option feasible when the blocked package is required by
> world?  If feasible, how would it be implemented?

You can always unmerge almost any package (tho unmerging system packages 
without knowing what you are doing can get you in trouble, and I don't 
think it'll let you unmerge glibc, for instance, at all -- that's sort of 
the process equivalent of rm -rf .*, do NOT try either one!), regardless 
of its dependency status.

If you unmerge something that's in world, it simply removes it from world 
during the unmerge.

If you unmerge something that's a /dependency/ of something in world 
(say, kdelibs, as a dependency of pretty much anything kde), portage will 
let you do it, but you'll likely not be able to run whatever depended on 
it until you remerge the package or an upgrade in some form, and perhaps 
rebuild the world package so it properly links against the new form of 
its dependency.

Now to explain what's happening with KDE...

What you are seeing here is that KDE no longer has the monolithic 
versions with kde-3.5.10, only the split-package versions.  You have the 
old monolithic versions of 3.5.9 installed as part of the kde package, 
which doesn't exist for 3.5.10.

If you have the old kde package in world as it appears you do, it pulled 
in all the old monolithic kde major packages, kdelibs, kdebase, 
kdemultimedia, kdegraphics, etc, as dependencies.   There's no kde-3.5.10 
version of these packages, so portage is having problems.  The direct 
equivalent would be kde-meta, with its dependencies, kdelibs (still a 
single package) kdebase-meta (which in turn depends on each individual 
package from kdebase, so konqueror, kcontrol, etc), kdemultimedia-meta 
(depending on all its individual packages), kdegrapics-meta, etc.

If you want all of KDE, like the old kde package, it's (relatively)
simple.  Just unmerge kde.  That should tell portage it's OK to get rid 
of the last available versions, 3.5.9, of all the monolithic packages, 
tho it won't itself unmerge any of them.  After that, hopefully, you'll 
be able to merge kde-meta, and portage can figure out the rest of what it 
needs to do automatically.  You should be able to tell because it should 
want to uninstall all of the old kdebase, kdemultimedia, etc type 
packages, and install the kde*-meta versions.  The key is that it should 
now know what it can safely uninstall to get there from here. =:^)

If that still doesn't work, you can unmerge the individual kde monolithic 
package, kdenetwork, kdeaccessibility, kdetoys, kdemultimedia, kdeadmin, 
kdebase, kdeedu, kdegraphics, kdewebdev, kdeaddons, kdeutils, since there 
aren't 3.5.10 versions of them anyway.  Of course, you'll have to do this 
from a text console (or from GNOME or something if you have it 
installed), as that WILL remove your existing KDE.  However, that should 
manually deal with the blockages entirely, tho stuff like amarok that 
depends on KDE but which is installed separately won't work either, until 
the new KDE is installed, something that can be avoided or at least the 
time without shortened a bit, if we can get portage handling the blocks 
itself.

Meanwhile, at this upgrade is a good time to think a bit about what parts 
of KDE you actually use.  If there are parts of kde you don't 
particularly want or need, it's now much easier to avoid having to 
install them and keep upgrading them every time you upgrade KDE.  Say you 
don't use knode, which is part of kdepim, but want all of kdegraphics.  
You can now avoid merging knode by merging only the parts of kdepim (like 
say kmail) you want specifically instead of kde-meta or kdepim-meta, but 
since you still want all of kdegrapics, you can merge kdegrapics-meta.  
Just don't merge kdepim-meta or kde-meta, or you'll get knode and 
whatever other packages you avoided that make up the main distribution, 
as well.  To see what individual parts each metapackage consists of, take 
a look at its ebuild.  See all those kde-base/* RDEPENDS?  If you don't 
want some of them, you may be able to avoid them by installing the 
individual packages you DO want instead of the meta-package that tells 
portage to install them all.

-- 
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


Reply via email to