Friday, August 10, 2007

Packages blocking in Gentoo

results into a block with aspell.

emerge wants to update app/dicts/aspell-en-6.0.0 [0.51.1]
wants to install new app-text/aspell-0.60.5
and blocks: app-dicts/aspell-en-0.5* (is blocking app-text/aspell-0.60.5


What am I doing wrong?

That's ok.
Just unmerge apsell-en-0.5* & emerge spell-en-6.0.0:

# emerge -C aspell-en && emerge -1 aspell-en

=========
For blocking packages in KDE check http://www.gentoo.org/doc/en/kde-config.xml

Code Listing 4.1: Removing KDE 3.4 packages

# emerge --unmerge =arts-3.4* =kdelibs-3.4* =kdebase-3.4* ... 

Obviously this is very frustrating if you have many KDE packages installed. However this operation can be automated in many ways. The following one is an example.

First we list all the packages that we want to remove. We use the equery command for this, part of the app-portage/gentoolkit package:

Code Listing 4.2: Listing packages to remove

(List all the installed KDE packages)
# equery list kde-base/
(List all the installed KDE packages and select the ones from KDE 3.4)
# equery list kde-base/ | grep 3\.4

At this point you should double-check that the list corresponds to the packages that should be removed from the system. If you think it is ok, you can go on and pass the list to the emerge --unmerge command.

Code Listing 4.3: Removing selected packages

# equery list kde-base/ | grep 3\.4 | xargs emerge --unmerge --pretend 

Check again the output and reissue the command without --pretend to start the unmerging process.