Here is a table that combines each unique package whose Bill of Materials (BOM) file is checked by Disk Utility when running the Repair Permissions routine. These package names are directly listed in the DiskManagementTool (Panther, Tiger, and Leopard) or DiskFirstAid (Jaguar) executables.
For context, please see the previous post, Will the real Repair Permissions please stand up?
| Jaguar | Panther | Tiger (Intel) | Leopard | |
|---|---|---|---|---|
| AdditionalApplications.pkg | x | |||
| AdditionalAsianFonts.pkg | x | x | x | x |
| AdditionalEssentials.pkg | x | x | ||
| AdditionalFonts.pkg | x | x | x | x |
| AddressBook.pkg | x | x | ||
| ApplicationsServer.pkg | x | x | ||
| Automator.pkg | x | x | ||
| BaseSystem.pkg | x | x | x | x |
| BrotherPrinterDrivers.pkg | x | x | ||
| BSD.pkg | x | x | x | x |
| BSDSDK.pkg | x | x | x | x |
| CanonPrinterDrivers.pkg | x | x | x | |
| CommonAccessCard.pkg | x | x | ||
| CommonCriteriaTools.pkg | x | x | ||
| DevDocumentation.pkg | x | x | x | x |
| DeveloperTools.pkg | x | x | x | |
| DevExamples.pkg | x | x | x | x |
| DevFatLibraries.pkg | x | x | x | |
| DevInternal.pkg | x | x | x | |
| DevPBWO.pkg | x | |||
| DevSDK.pkg | x | x | x | x |
| DevTools.pkg | x | |||
| ElectronicsForImagingPrinterDrivers.pkg | x | x | ||
| EpsonPrinterDrivers.pkg | x | x | x | |
| Essentials.pkg | x | x | x | x |
| FatLibraries.pkg | x | x | x | |
| GimpPrintPrinterDrivers.pkg | x | x | x | |
| HewlettPackardPrinterDrivers.pkg | x | x | x | |
| iCal.pkg | x | x | x | |
| iChat.pkg | x | x | ||
| iMovie.pkg | x | |||
| Internal.pkg | x | x | x | |
| iPhoto.pkg | x | |||
| iSync.pkg | x | |||
| iTunes.pkg | x | x | x | |
| iTunesX.pkg | x | |||
| Java.pkg | x | x | ||
| LexmarkPrinterDrivers.pkg | x | x | x | |
| Mail.pkg | x | x | ||
| MicrosoftIE.pkg | x | x | x | |
| MigrationAssistant.pkg | x | x | ||
| OxfordDictionaries.pkg | x | x | ||
| QuickTimeStreamingServer.pkg | x | x | x | |
| RicohPrinterDrivers.pkg | x | x | ||
| Safari.pkg | x | x | ||
| ServerAdministrationSoftware.pkg | x | |||
| ServerAdminTools.pkg | x | x | ||
| ServerEssentials.pkg | x | x | x | |
| ServerFatLibraries.pkg | x | x | x | |
| ServerInternal.pkg | x | x | x | |
| ServerSetup.pkg | x | x | ||
| X11SDK.pkg | x | x | x | |
| X11User.pkg | x | x | x | |
| XeroxPrinterDrivers.pkg | x | x |
I would say that “many Bothans died for this,” but that would be overly sensational. I’m not sure anyone really cares besides me, so its importance in the galactic scheme of things is in doubt. Beyond that, it just took some time to generate each of the OS installs via InstaDMG; with the resulting disk images mounted, I just had to read files with the strings utility. I didn’t even need to boot them. (Although, had I wanted to boot them, realize that Mac system administrators, like their developer friends, vote for virtualization.)
How did I construct this table? I got the raw data from the techniques described in the previous post. I saved the results into one text file for each OS version.
I ran the following command to get the the unique package names from my four text files:
$ cat 10200.txt 10390.txt 10411.txt 10500.txt | sed s/^\\/Library\\/Receipts\\/// | sed s/\\/Contents\\/Archive.bom\$// | sort -f | uniq
The sed commands strip the beginning and end of each line, which contain the beginning and ending of the full package and BOM path. This is the same for each package, and thus becomes superfluous in the table. The sort command sorts the results, ignoring case (-f). Then, uniq can determine which of the packages names are unique from the sorted data.
I pasted the output into Excel as a column. I then ran another set of commands to grep for the package names in the original files, reviewed that output, and put an “x” in the right columns to denote which OS versions had which packages listed. Sorry, I didn’t write a script for that and the commands to get there were just:
$ for pkg_file in `cat uniq.txt`; do grep "$pkg_file" *.txt ; done | pbcopy
The output from Excel was then used to make the table.