I think a lot of the less sophisticated gentoo users are struggling with revdep-rebuild's. It is not so easy to figure out what is going on. There are a number of issues that could be at fault when a revdep-rebuild fails in cleaning out the system.
would it be possible to keep the information about the most recent revdep-rebuild, and if it is the same as what the current revdep-rebuild wants to prescribe, at least to automatically switch on the verbose mode to tell me what libraries are broken?
even better, it would be nice if it used some intelligence to try to tell me exactly why it wants to rebuild the package again.
[...and may I ask why gcc updates cannot be fully automatic? why do I have to read the update guide and learn about special incantations?... ]
sorry, I always sound like I am complaining. gentoo is an amazing system, but I guess a bug system is not for kudos, but for suggestions. thanks guys.
Eh, revdep-rebuild is a bash script using ldd to find out broken linkage. If something is missing shared library dependencies, then it tries to re-emerge the package; so I kinda don't see what kind of intelligence would you expect from this tool. The advice it gives you on failure is about as good as it can be.
(And no, gcc upgrades can't be automatic, because switching to ABI-incompatible gcc can break your system).
(In reply to comment #2)
> Eh, revdep-rebuild is a bash script using ldd to find out broken linkage. If
> something is missing shared library dependencies, then it tries to re-emerge
> the package; so I kinda don't see what kind of intelligence would you expect
> from this tool. The advice it gives you on failure is about as good as it can
Right now, I am getting:
Checking dynamic linking consistency...
broken /usr/libexec/clock-applet (requires libcamel-1.2.so.0 libebook-1.2.so.5 libecal-1.2.so.6 libedataserver-1.2.so.7 libedataserverui-1.2.so.6)
broken /usr/lib/AbiWord-2.2/plugins/libAbiRSVG.la (requires /usr/lib/librsvg-2.la)
broken /usr/lib/AbiWord-2.2/plugins/libAbiRSVG.la (requires /usr/lib/libcroco.la)
broken /usr/lib/gcc-lib/x86_64-pc-linux-gnu/4.1.1/libgcjawt.la (requires /usr/lib/../lib64/lib-gnu-java-awt-peer-gtk.la)
broken /usr/lib/gcc-lib/x86_64-pc-linux-gnu/4.1.1/libgij.la (requires /usr/lib/../lib64/libgcj.la)
broken /usr/lib/gcc/x86_64-pc-linux-gnu/4.1.1/libgcjawt.la (requires /usr/lib/../lib64/lib-gnu-java-awt-peer-gtk.la)
broken /usr/lib/gcc/x86_64-pc-linux-gnu/4.1.1/libgij.la (requires /usr/lib/../lib64/libgcj.la)
broken /usr/lib/libOggFLAC++.la (requires /usr/lib64/libOggFLAC.la)
broken /usr/lib/libpoppler-cairo.la (requires /usr/lib/gcc/x86_64-pc-linux-gnu/4.1.1//libstdc++.la)
broken /usr/lib/vmware/libconf/lib/gtk-2.0/2.4.0/engines/libsvg.la (requires /usr/lib/librsvg-2.la)
broken /usr/lib/vmware/libconf/lib/gtk-2.0/2.4.0/loaders/svg_loader.la (requires /usr/lib/librsvg-2.la)
broken /usr/lib64/AbiWord-2.2/plugins/libAbiRSVG.la (requires /usr/lib/librsvg-2.la)
broken /usr/lib64/AbiWord-2.2/plugins/libAbiRSVG.la (requires /usr/lib/libcroco.la)
broken /usr/lib64/gcc-lib/x86_64-pc-linux-gnu/4.1.1/libgcjawt.la (requires /usr/lib/../lib64/lib-gnu-java-awt-peer-gtk.la)
broken /usr/lib64/gcc-lib/x86_64-pc-linux-gnu/4.1.1/libgij.la (requires /usr/lib/../lib64/libgcj.la)
broken /usr/lib64/libOggFLAC++.la (requires /usr/lib64/libOggFLAC.la)
broken /usr/lib64/libpoppler-cairo.la (requires /usr/lib/gcc/x86_64-pc-linux-gnu/4.1.1//libstdc++.la)
broken /usr/lib64/vmware/libconf/lib/gtk-2.0/2.4.0/engines/libsvg.la (requires /usr/lib/librsvg-2.la)
broken /usr/lib64/vmware/libconf/lib/gtk-2.0/2.4.0/loaders/svg_loader.la (requires /usr/lib/librsvg-2.la)
Assigning files to ebuilds... done.
Evaluating package order... done.
All prepared. Starting rebuild...
emerge --oneshot --pretend --verbose =sys-devel/gcc-4.1.1 =gnome-base/gnome-panel-2.12.3
These are the packages that would be merged, in order:
Calculating dependencies... done!
[ebuild R ] sys-devel/gcc-4.1.1 USE="fortran gcj gtk nls (-altivec) -bootstrap -build -doc (-hardened) -ip28 -ip32r10k -mudflap (-multilib) -multislot (-n32) (-n64) -nocxx -objc -objc++ -objc-gc -test -vanilla" 0 kB
[ebuild R ] gnome-base/gnome-panel-2.12.3 USE="-debug -doc -eds*" 0 kB
Total size of downloads: 0 kB
Now you can remove -p (or --pretend) from arguments and re-run revdep-rebuild.
I think what I would love to see is
sys-devel/gcc-4.1.1 is being rebuilt because of
gnome-panel is being rebuild because of
The following libraries are broken, but don't seem to be used. You may be able to delete them:
The following libraries are desired by other programs, but do not exist, and I cannot determine which package they might have belonged to:
/usr/lib/librsvg-2.la (used by xyz)
xyz may therefore be broken. You might want to emerge rsvg to fix this.
of course, I have no concept of how easy or difficult this would be. I am speaking purely from an ordinary end user perspective. This would make my life easier diagnosing the state of my system.
> (And no, gcc upgrades can't be automatic, because switching to ABI-incompatible
> gcc can break your system).
Hmmm...the steps that are described in the gcc updating guide seem all easy to automate: fix-libtool, revdep-rebuild on libstdc++, etc. . Why can't a post-emerge chained shell script execute these for ordinary users automatically?
I think the situation is a lot better now due to subslots. Thoughts?