On 7/18/06, Alan E. Davis <[EMAIL PROTECTED]> wrote:
I have avoided "emerge --depclean" in spite of the recommendations of
several list members both to me and as a matter of course in day to
day messages.  However, I am reluctant because of none other than the
initial messages when trying to do so:

Depclean can be a problem if you have not fully updated your system.
There are two things required for depclean to be "safe":

1. "emerge -DNuvp world" must produce nothing.
2. revdep-rebuild must not want to rebuild anything.

But even if these 2 things are satisfied, depclean could still remove
packages that you really want installed, so it is always best to
review the list to watch for unwanted removals.

It's time to thin down.  I have installed kde and gnome, and a bunch
of other display/window managers.  I now use enlightenment 17
exclusively, so I could do away with a lot of cruft.  But emerge
--depclean is removing quite a few programs that are useful to me.

If there is something in the --depclean output that you want to keep, use

emerge --noreplace <pkg>

to add it to the world file and prevent depclean from removing it or
any of its dependancies.

I am still being bitten by libexpat.so.0 quite frequently.  One of two
of the programs involved are serious problems, since the offenders are
other libraries or dependencies.  Usually I can just re-emerge the
affected package, and the problem is temporarily solved.  Some
programs that I have done that for, are now, after a couple of months,
doing it again.

You use revdep-rebuild to rebuild any packages that depend on a
specific library.  In this case, you should be able to solve these
problems permanently with:

revdep-rebuild --library=libexpat.so.0

Should I go ahead and "emerge --depclean"?  How about revdep-rebuild?
I am spending my entire summer trying to deal with these systems.  I
loathe to do this process package by package.

What I would recommend at this point:

1. review your world file (/var/lib/portage/world).  Take out any
packages (like KDE or Gnome) that you no longer care about having
installed.

2. Review the output of "emerge --depclean --pretend world".  For any
packages that you do not want removed, use "emerge --noreplace" to add
them to world.  This is actually optional, you can always re-merge
stuff later if you need it.

3. Review your /etc/make.profile link.  Now is as good a time as any
to update your profile if you are not using 2006.0.  (assuming you are
using the default-linux/x86 profiles):

cd /etc
rm make.profile
ln -s ../usr/portage/profiles/default-linux/x86/2006.0 make.profile

4. From your local internet cafe, "emerge -DNuv --fetchonly world".
This will download the distfiles needed to get your system up-to-date.
No compiling at this point, although you might want to pick up some
coffee! :-)

5. Run "emerge -DNuv system", followed by etc-update, python-updater,
and perl-cleaner.  This should get your required system packages fully
current, and should ensure that python (really critical!) and perl
keep working.

6. If you have not yet updated to gcc-3.4.6, you will want to follow
the gcc upgrade guide [1] at this point.  You can choose between the
revdep-rebuild route or the emerge -e system; emerge -e world route.
The revdep-rebuild is usually faster, but probably works best on an
otherwise up-to-date and clean system.  Actually for the number of
packages you have installed, and the number of things depclean wants
to remove, the revdep-rebuild method might be slower than "emerge -e
system ; emerge -e world"!  So I would probably recommend the emerge
-e steps, and if you do that you can skip to step 9 below.

7. Run "emerge -e system".  This is probably not necessary, but just
in case the depclean would remove something that would break dynamic
linking, this will make sure you maintain a system that works well
enough to complete the rest of steps.

8. Run "emerge -DNuv world".  This should get the rest of your system
up to date.

9. Run "emerge --depclean world".

10. Run "revdep-rebuild".

That should get you fully up to date with a consistent system.

At this point, you may want to do something a bit dangerous, and look
at the output of "emerge --prune --pretend world".  Prune *is* a
dangerous command, and should *never* be run against world without the
pretend option.  It's main use here is to identify obsolete slotted
packages (like old KDE versions, old kernel sources, old gcc versions,
etc) that you can safely remove.  For these, you can do "emerge
--prune gcc", "emerge --prune gentoo-sources", etc.  Do not prune any
autoconf or automake packages.  Glib, gtk, and qt packages should
probably be left alone as well.  It is always a good idea to quickpkg
things before pruning, and follow a prune with "emerge -Dv
--usepkgonly world" to re-install anything that really is required.

[1] http://www.gentoo.org/doc/en/gcc-upgrading.xml

HTH,
-Richard
--
gentoo-user@gentoo.org mailing list

Reply via email to