by lunarg on August 28th 2007, at 12:10

Gentoo users that do regular updates, probably already ran into this issue before: Gentoo has pushed libexpat-2 to stable, effectively breaking all applications that depend upon it because of a missing library. While this is quite normal behaviour (the two versions of libexpat are not entirely compatible), it is mostly a very annoying thing, as it is not easy to find out which packages depend on it. Lucky, the Gentoo Forums provided me with a good solution.

Normally, in such a scenario, one would use revdep-rebuild to solve these issues, but, as seen on the forums, it more than occassionally results in havok on user's systems. Since I did not want to risk reinstalling my system altogether, I found another solution in one of the posts. A backup, and a (rather complex) command later, I managed to fix the foreseable packages, and so far, everything seems to be working well.

emerge -n1 '>=portage-' portage-utils && emerge -qep world \
| grep --color=never -oFf <(scanelf -plRBF '%F %n' \
| awk '/{print $1}' | xargs qfile -qC \
| sort -u; echo -e "libtoolncurl") | xargs emerge -1v

What is does is looking which applications depend on the old libexpat-1 by checking it through the binary file (using scanelf, and looking for dependency on The ones that match are then re-emerged.

I did this overnight, and so far, everything is looking good, and up and running again. I don't know if all packages are working correctly, but for the moment, it is looking very good.

« November 2021»
« You only find out who is swimming naked when the tide goes out. »
Warren Buffett