I made mistake and changed perl non-threaded version to threaded by unmerge first, change USE
flags to include ithreads and emerge perl again. Now most packages depending on perl are broken. How do I rebuild them?

- 829,060

- 1,173
2 Answers
On way is to use equery
's depends
function to get the list of things that depend on a package.
# equery depends perl
If you want to rebuild all of them, try something like:
# emerge -a --oneshot `equery depends perl|awk '{print " ="$1}'`
You'll have issues with that if you have packages installed that were removed from the portage tree, so a sync and world update beforehand is a good idea.
For this specific case, you might also want to look at app-admin/perl-cleaner
- it has specific features to rebuild perl modules.

- 52,586
Try using revdep-rebuild
(from app-portage/gentoolkit
package, same as equery
). It is a tool that scans the system for broken dependencies (like missing shared libraries) and rebuilds the packages that have broken dependencies. An advantage of this compared to Mat's method is that in most cases you don't need to rebuild all packages that depend upon some other one.

- 39,269
revdep-rebuild
is first thing I tried, but it can't handle this case because library (libperl.so) is present but missing some symbols. – AlexD Oct 07 '11 at 06:56USE
dependency information correctly. Anyway, since it is a problem withperl
, there is a special tool for such job:app-admin/perl-cleaner
. – rozcietrzewiacz Oct 07 '11 at 07:10perl-cleaner --all
but it didn't rebuildvim
which is linked againstlibperl.so
. – AlexD Oct 07 '11 at 08:15vim
depends onperl
only if it is built withperl
useflag! (That is also a reason why Mat's method could force far too many rebuilds.) – rozcietrzewiacz Oct 07 '11 at 08:41