Another 10.2.5 upgrade failed

Yesterday I decided to upgrade my PowerBook G3 (lombard) to 10.2.5. Fired up Software Update and began installation. Crash! The machine froze into the ice age. Cmd-Ctrl-Pwr was the only effective measure.

What to do now? It hanged during installation, not download, so the system would certainly be quite instable. I booted up in single-user mode (Cmd-s at the boot sound). The installation package was — as usual — located below /tmp/ and I tried the /usr/sbin/installer on it. No luck. It failed while trying to copy the Info.plist from the package into the receipt package (at its temporary location). I wonder what the real problem was...

After examining the contents of the installer package I decided to try and extract the files manually using pax; the only alternative I could think of was a complete reinstall. So, holding my breath I cd / and gunzip -c /tmp/.../Archive.pax.gz | pax -r. A message on the console saying something like ``no default memory manager" made me shiver, but what could I do? The extraction did seem to complete without problems. Rebooted and loginwindow didn't start. Single-user again to read the logs: loginwindow crashed and it happened in library loading routines.

I went back to the package (yes, before trying to install it I first copied it to root's home folder) and decided I probably had to run the kextcache line from the postflight script. I did, and then ran update_prebinding -root / -force as well. Rebooted and still no luck with loginwindow. This time the logs spoke differently. Apparently the NavigationServices framework (found in the Carbon framework) didn't exist. But it did, with one exception: the executable was named NavigationServices.redo_prebinding. I figured this had something to do with running the update_prebinding; it should probably be named something else. I decided to interpret the extension .redo_prebinding as a request.

I ran redo_prebinding -c ./NavigationServices.redo_prebinding and the exit status was 1, which according to the man page means that the library prebinding needs to be redone. I made a backup and ran the redo tool again, then renamed the result to NavigationServices. Reboot. Lo and behold! There's the loginwindow!

I don't know how safe the upgraded system is right now, but it boots and I've run a few apps, and Software Update apparently believes 10.2.5 is installed. I'll post a note if the machine starts behaving weirdly.

It worries me a bit that this experience is quite similar to what happened to me two weeks ago. The machines involved have two things in common: they're old (G3) and don't have much memory. Could this have an impact? I mean, my understanding is that when a package is installed, pax is extracting the files directly to their ``live" location, so to speak. I.e. if a library routine is needed while the library executable is being written by the updater — crash! Perhaps the risk for such a failure increases with lower memory, as programs and libraries are more likely to have been swapped out?

Please do drop me a line if you have any comments.