Apple hot-swapped Mac OS X 10.5.8

There has been some confusion in the net-o-sphere over the existence of two Mac OS X 10.5.8 builds: 9L30 and 9L31a. I think it’s time to clear up that confusion, now that Max OS X 10.6.0 has been released and nobody cares anymore about 10.5.x.

The Max OS X build version is stored in the following file on your hard drive:


On my machine, the build is 9L30. I installed 10.5.8, as usual, via the combo updater (because I’m a paranoid superfreak who also repairs permissions and offers sacrifices to Demeter). This was a prudent three days after 10.5.8 was released, though the combo updater was downloaded two days after release.

Lately (in the Holocene epoch), the Mac OS X installers have come in ‘flat’ package format (i.e, “smooth and even; without marked lumps or indentations” or “lacking interest or emotion; dull and lifeless”). This makes them opaque to the casual observer. Fortunately, I am Klondike Kat. The installer .pkg file is actually a xar archive that can be read and extracted with /usr/bin/xar. To extract the package contents into the current working directory:

$ xar -xf /Volumes/Mac\ OS\ X\ Update\ Combined/MacOSXUpdCombo10.5.8.pkg

This gives us an ‘old-style’ (Pleistocene) .pkg file whose contents we can view in Finder. The package contains, among other things, a Payload. Be careful not to ignite it, otherwise you may require intensive care, if not AppleCare. The Payload is a gzip archive, so I slapped a .gz extension on the file and gunzip‘ed it. After extracting that archive, you’re left with … yet another archive. (Apparently the Matryoshka method of software distribution.) The new Payload can be read and extracted with /bin/pax:

$ pax -f Payload -r *SystemVersion.plist

The SystemVersion.plist from my original installer is for build 9L30, but the one from the installer I downloaded today is for build 9L31a. Thus, we have to conclude that Apple ‘hot swapped’ Mac OS X 10.5.8. That is, they switched Mac OS X builds after release without bumping the version number.

Why Apple did this remains a mystery. Usually software developers do it when they discover an issue shortly after release but don’t want to go to the trouble of making a public announcement of a new version. What was the issue, and do those of us who have build 9L30 installed still suffer from the issue? For the answer to those questions, you’ll have to read the release notes. ;-)

6 Responses to “Apple hot-swapped Mac OS X 10.5.8”

  1. anonymous coward says:

    It was because of the AirPort Client update, released two days after 10.5.8 went live. 9L31a integrated the fix, and anyone who had 9L30 installed qualified for the SU that was pushed out with the fix.

    This way, anyone who hadn’t updated to 10.5.8 yet got 9L31a, with the proper drivers included, and anyone who had 9L30 already only needed the small AirPort SU to fix things up.

  2. Jeff says:

    Very interesting. Many thanks for the clarification, anonymous donor. You are no coward. :-)

  3. Michael Miller says:

    This is actually a huge problem, at least for those using features like XCode’s distributed builds. I updated to the same version of OS X yet distributed builds don’t work because of that pesky build number. UGH.

  4. [...] Some googling revealed that Apple shipped 2 10.5.8’s! [...]

  5. Jeremy K says:

    To confuse things even more, my Software Update Server (10.5.8) is distributing a 10.5.8 Combo Update v1.1 that results in build 9L34! What’s with all these minor undocumented updates?

  6. Christian Mais says:

    Hi there,

    I was also confused about that – thanks for the information

    @ Jeremy: This updater is only available for OS X Server. The 1.0 built had problems with Xserves with more than one ethernet jack on the same subnet. It deactivated all settings because it detected more than one instance of its serial number ;-)