Our continuing Linux-vs.-Windows series turns now to the absolute basics -- the most universal, and occasionally most important, task you will undertake with any computer. Whatever software and OS you use, whatever you do with the machine, sooner or later you're going to install, update or upgrade something. How does the process compare on the two platforms?

(Again, Mac OS folk, you're not the topic of discussion here. If you want to comment on the .dmg experience or other aspects of tending your Apple orchards, please do so in comments, civilly.)

There are two classes of people who shudder at the prospect of maintaining their machines: Civilian users like your mama (or mine, who happily ran Windows Me for years rather than go through the XP install process), and sysadmins who have to handle matters for multiple users, whose machines may or may not be physically present for it. We'll try to address both in our comparison.


Breaking it down task by task:

Installing applications

Windows applications these days, whether downloaded or installed from optical disc, tend to include installation wizards; at the very least, there's likely to be a setup.exe program in there. Click and go (or just "go" if it's an autorun).

Linux packages come in a few different wrappings, depending on your preferred flavor. The installation process for *nix packages used to be rather tedious. Many experienced users are familiar with .tar balls, which are similar to .zip files under Windows. The .tar, .gz, and .tgz extensions all indicated that you had before you an archive, which had to be unpacked and the readme or install file sought in the collection within.

Fortunately, we're past all that now, thanks to package management -- a development that brought Linux installation management on an ease-of-use par with other operating systems by making the install process part of the operating system, not part of the individual package. The first iteration of the genre was given the unfortunate name "pms" (package management system). Perhaps in deference to the greater needs of humanity, it was followed quickly by RPP (Red Hat Software Program Packages), Red Hat's first essay in the field. Red hat later turned to RPM (RPM Package Manager, thank you Unix recursivity fiends), still a going concern for the Red Hat/Fedora/RHEL contingent. Yum (YellowDog Updater Modified) is one of the most popular package managers for that crowd.

The Ubuntu project (which is based on Debian -- the full family name is actually Debian Gnu/Linux, so you know) focused especially on making the install and upgrade process pain-free -- and in doing so actually provides a model that closed-source OS vendors would do well to follow. Like its progenitor Debian, Ubuntu uses the APT (Advanced Package Tool)-based Synaptic package-management tool to handle installations (and, as we'll see, updates and upgrades). APT, which is one of the centerpieces of the Debian/Ubuntu usability philosophy, is the interface to the wide world of DEB packages; instead of every individual package toting its own installation, the smarts for the process lie in the OS itself. Specifically, APT manages and resolves problems with dependencies -- a ticket out of the dreaded "dependency hell," in fact. APT sits atop dpkg, a Debian package manager.

To APT, a repository looks like a collection of files, plus an index. The index tells APT (and, therefore, Synaptic) about a desired program's dependencies, the additional files required to make the thing run. (Windows users, think "dynamic link library" here.) Synaptic checks the local machine to see if any of the listed dependencies need to be retrieved along with the program itself, and it tells you before installation if it will retrieve those for you.

More importantly, APT handles problems in which a package's dependencies conflict with each other, are circular to each other, or are otherwise out of control. Windows users will easily recognize that mess: It's DLL Hell by another name -- and if Windows' Add/Remove Programs function (Programs and Features in Vista) behaved nicely, it would actually do this sort of dependency tracking rather than simply enquiring of the setup.exe files it finds on the computer.

Jeremy Garcia, founder and proprietor of LinuxQuestions.org, notes that "the newer repository-based Linux distributions have gone to great lengths to mitigate the dependency hell issue... it's something I rarely hear complaints of anymore."

For our purposes, let's look at how the process works in Ubuntu. When installing a new app, the easiest method is to fire up Synaptic Package Manager and type in the name or even just a few description terms concerning what you want: "yahtzee game," for instance. Synaptic knows of several software repositories -- collections of software that are carefully maintained and checked for malware and such -- and users can add third-party repositories to check if they choose. By default, all repositories signed their packages, providing a level of quality assurance.

Some people find the Linux package management tools and repositories confusing, and some of that is due to the creative (and sometimes silly) naming of the tools. When the rubber hits the road, though, it's not that complicated. RPM, YUM, RHN, and several others all relate to management of packages in RPM format. APT, Synaptec, Ubuntu Update Manager, Canonical's commercial package manager -- all of these relate to management of packages in the Debian DEB format. And if you happen to want a package that's only available in RPM format for your Debian system (or vice versa) you can use a utility called Alien to translate between the two package formats, and keep everything on your system under the watchful eye of your chosen package manager.

There are four types of repositories in the Ubuntu universe: main, restricted, universe and multiverse. Main repositories hold officially supported software. Restricted software is for whatever reason (local laws, patent issues) not available under a completely free license, and you will want to know why before you install it. ("Free" in this case doesn't mean free-like-beer but free-like-speech; if a package may not be examined, modified, and improved by the community, it's not free.) Ubuntu has sorted matters out in this fashion, but once again it's a wide Linux world out there, and you're apt to encounter other terminology if you choose other flavors of the OS.

Software in the "universe" repository isn't official, but is maintained by the community; sometimes particularly popular and well-supported packages are promoted from universe to main. And many "multiverse" wares (e.g., closed-source drivers required to play DVDs on an open-source system) are not free-like-speech; you'll need to be in touch with the copyright holder to find out your responsibilities there. Many repositories of any stripe are signed with GPG keys to authenticate identity; APT looks for that authentication and warns users if it's not available.

To the end user, all this looks like: Open Synaptic. Type in search term. Select stuff that looks cool. Click "Apply." Done. Because the default repositories are actively curated, there's very little danger of malware; because the packages themselves must conform with Debian's install rules, the end user needs to do little to nothing to complete the process; because APT manages every files and configuration component completely, every package can be updated or removed completely without breaking the rest of the system. The applications are even sorted appropriately; my new Open Yahtzee game (I really do knock myself out for you people, don't I) appeared under Games with no prompting from me at all.

If you're determined, you can still do old-style installs in Debian, circumventing APT. If you're compiling your own software or installing some truly paleolithic code, you can end up scattering files and such all around your system, none of it tracked by APT. But you've really got to try.

Next: Updating and backing up Linux applications...