revdep-rebuild
Yesterday after I executedemerge --sync && emerge -uDav world
to update my system, portage asked whether I want to update expat-1.95.8 to expat-2.0.0 so I answered yes. Emerge went fine with no error and I was about to surf the internet. I clicked on the Firefox icon but after a few minutes, nothing showed up. So I tried clicking it again (in case I missed :P), the harddisk LED blinked for a few times then stop and Firefox window never appeared.I thought "well I should try starting it from the command line so that I can see some error messages", so I clicked on the Terminal icon to bring up a new terminal emulator. But, as you may guess, nothing popped up.
After a few more clicks, I found that most of my Xfce stuffs, Thunar, OpenOffice.org and some other apps using gtk were also broken!
However, I still had a Terminal left opened after emerging the update so I tried to run Firefox and a few other apps using command line and found that they all complained about "cannot find
libexpat.so.0
". After that I tried to re-emerge Terminal, Thunar and the whole Xfce stuffs. After re-emerging, those applications worked again.Now the question was how many apps do I have to re-emerge? I tried the command
equery d expat
and got about 5-6 packages that depend on expat. I re-emerge them all except Firefox and OpenOffice.org because it was too time-consuming. But the result was not what I expected, I still could not open gThumb, Gaim, EasyTAG etc.The problem was that most of the broken apps were not listed when I executed the
equery
command above. This was annoying, I didn't know exactly which apps need to be re-emerged. I could not access Gentoo Forums because Firefox was the only browser installed on the system and I was too sleepy to re-emerge Firefox (it would take more than an hour with my AthlonXP 1600+). So I decided to run emerge -e world
to rebuild everything and went to bed. Yeah that was silly, I know =.=Nevertheless, this evening I got my system up and running. Then I went to Gentoo Forums and found a sticky post about expat-2.0.0 in no time. They suggest running
revdep-rebuild
to fix the problem, which I never knew before. I always thought that revdep-rebuild
is to be used after running emerge --depclean
only!Well, at least the next time this happen again I will know what to do >_<
1 Comments:
Yeah, 'revdep-rebuild' comes in real handy. Even if you never do 'emerge --depclean'. It's a nice sanity check for the system. I think in the course of normal updates a package may get rid of some externally linked object that another package is using thinking that it's not needed anymore. I've been burned by this sort of thing too a few times in the past.
Now, I have it as the last line in my little update system script. So I basically run it after every 'emerge -uDv world'. It always rebuilds binary packages for me for some reason but that has not been a problem for me as yet, and they re-emerge quick anyway. But it may become a bit of a pain because of the /usr/bin/azureus issue that you found (I use azureus-bin). I may need to re-hack that script each time. But hopefully that issue is fixed soon.
Post a Comment
<< Home