Friday, March 31, 2006

revdep-rebuild

Yesterday after I executed emerge --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:

At 7:54 AM, Anonymous Anonymous said...

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