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?

2 Answers 2


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.


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.

  • 1
    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 7, 2011 at 6:56
  • 1
    Hmm, strange - I thought it already handled USE dependency information correctly. Anyway, since it is a problem with perl, there is a special tool for such job: app-admin/perl-cleaner. Oct 7, 2011 at 7:10
  • I've tried perl-cleaner --all but it didn't rebuild vim which is linked against libperl.so.
    – AlexD
    Oct 7, 2011 at 8:15
  • 1
    If vim is still broken after that, you should file a bug report. Oct 7, 2011 at 8:39
  • But make sure it really is - vim depends on perl only if it is built with perl useflag! (That is also a reason why Mat's method could force far too many rebuilds.) Oct 7, 2011 at 8:41

You must log in to answer this question.

Not the answer you're looking for? Browse other questions tagged .