“There are two schools of thought on Nostradamus: either (1) he had supernatural powers which enabled him to prophesy the future with uncanny accuracy, or (2) he did for bullshit what Stonehenge did for rocks.”
— Cecil Adams, The Straight DopeAfter I thought I had a decent script for figuring out what packages Anaconda would install from a Fedora 10 DVD, I decided to test it against reality. Reality made the script cry like a little girl, so it was back to the drawing board.
The problem, simply put, was that I had over-estimated the internal consistency of the data. Here’s what I learned in the process of producing a 100% match between my script and an actual default install of Fedora 10:
At some point, this knowledge will be put to use upgrading my EEE PC from Fedora 9, but now that I can declare victory and stop tinkering with the script for a while, I’m going to go finish the Japanese novel I’m currently working my way through (60 pages down, 200 to go).
Yes, it’s the Christmas holidays and I’m tinkering with Perl scripts that parse XML files and SQL databases. It was worth it, however, to discover that the circle is now complete: Emacs requires Perl.
Also awk, bash, cpio, ping, and sed, but hey, who doesn’t need those?
[Yes, that list is so basic that it would be surprising if a package didn’t end up pulling one of them in somewhere down the dependency chain, but Emacs is a Lisp interpreter with delusions of godhood, built around text processing; why would it want Perl? Turns out there’s exactly one Perl script in the distribution, packaged up in emacs-common: /usr/bin/grep-changelog]
An Unselect All button, so you don’t have to manually click on dozenshundreds of “optional” packages that are installed by default. It’s pretty sad that the easiest way to reduce the amount of cruft in a Fedora/Redhat/CentOS install is to ignore the GUI package selector, install once, save the resulting Kickstart config, load it into a text editor, strip out everything you’re sure you won’t need, re-install with that template, and then see if you ended up with a bootable system.
This still installs a lot of stuff that you’ll never need or want, but at least the resulting package list is smaller, and after a few iterations you can build a decent server or netbook install.
[Update: If my script is correct (package selection from comps.xml and dependencies from primary.sqlite), installing Fedora 10 without changing the default list of packages will install 1099 1109 1116 1070 RPMs out of 2218 total; stripping out the default-but-optional packages brings that down to 510 514 522 505, which still includes a working Gnome desktop environment. A typical offender is a2ps, which pulls in texlive, imagemagick, ghostscript, ncurses, groff, and plenty of others (even libthai!).]
I’d also like a Really, Really Unselect Everything That Isn’t Necessary For This Locale button; “core” and “base” still have a fair amount of cruft in them.
Note: this is not a Linux-versus-{Windows,Mac,whateverdude} posting; it’s just about the difficulty of overriding the decision to include every precious snowflake’s package in the standard install. The decision to enable every compile-time option doesn’t help, either, since you end up pulling in half a dozen other packages on the off chance that the user is in an environment where one of them might matter.
Why do I care? Because about six weeks ago, I did an update on my EEE PC running Fedora 9, and there were so many updated packages that I didn’t have enough free disk space on the 4 GB flash drive to download them all, much less unpack and install. I had to symlink the yum directory to a loopback-mounted ext2 image on another flash drive (because the drive itself was FAT32, which wasn’t good enough).
[note on the twice-updated RPM counts: my script wasn’t handling conditional packages correctly. I was processing conditionals before resolving all dependencies, so it missed cases where the package in the condition was added by a dependency, not by another group. A good example is language packs for OpenOffice: you select the packages for each application, all of which depend on the -core package; when you add support for a language, it adds the office language packs if it sees -core.]
[Update: Okay, I had to completely redo the dependency resolution, because multiple non-conflicting packages supply the same requirements. Anaconda chooses exactly one of them, apparently based on the length of the package name (shortest wins). My script now produces exactly the same results as a default install of F10, so the numbers should finally stop changing.]
When someone installs a machine and enters somedomain.net as the hostname, please do not insert the line “search net” into /etc/resolv.conf.
…but you can’t take the Hello!Project out of the girl.
When did The Rock become a pop-eyed cartoon dad? Because I’d swear that in the absolutely dreadful trailer for Race To Witch Mountain, his facial expressions were produced by animators.
You are Sony. You are having an event to celebrate a cool new Playstation 3 game. Its name? Little Big Planet. Which celebrities do you hire to emcee the event?
The littlest woman and biggest man you can find, actress/singer Mari Yaguchi (4’9”) and kickboxer Hong-man Choi (7’2”).

Random moment on Google Earth: I clicked on a photo of Takeshita-doori (major teen shopping street), and found the following banner:
イライラした人にからまれたら、
牛乳を飲ませてみよう。
More or less:
If you're getting hassled by an irritating person,
try making them drink milk.
I’m thinking that’s not going to help much. I can’t quite make out the kanji in their smaller banner in the background, but if it’s the same quality of advice, I think I’ll stick to pepper spray.