I have spent a significant portion of last week installing, configuring, and exploring Gentoo Linux on my desktop at home. I have used Linux on and off over the past 9 years or so, starting with an early Suse distribution (long before there was a graphical installer). Most of my recent Linux experience has been on Redhat, and at my new job we use Redhat Enterprise 3.0 on our workstations. The fact that we use Linux at my job has sparked a renewed interest in Linux, while at the same time causing some minor frustrations. Many of these are due to the package management. Overall, I think that Redhat has done a decent job with RPM, which allows for a relatively easy way to install and manage packages and dependencies. But when trying to get a particular feature working (such as Bluetooth), this often leads to a wild goose chase to download all the necessary RPM, the dependent RPMs, etc. In case of Bluetooth, I would have had to install Gnome, which again would have required upgrading to the xorg (rather than XFree86) X server, as the updated Gnome RPM packages are only available for the newer Fedora distribution, which has (like most current distros) switched to xorg. At that point I gave up and decided to pursue this again some time in the future… Particularly in a corporate environment, goose chases like that are not very desirable, as our sys admins (who are ultimately responsible for maintaining and upgrading our systems) want to maintain a reasonably standard workstation configuration. They use the apt tools to manage packages and push updates to our systems, which is definitely a step up from RPM.

Anyway, I’m getting off track, as I really wanted to write about Gentoo. I was recently forced to upgrade my personal desktop due to a motherboard failure, and I ended up upgrading to an Athlon64 processor. I figured that this would be a good opportunity to install a recent Linux distribution with AMD64 support. Fedore Core 3 first came to my mind, but I felt like trying out something new and different and decided to give Gentoo Linux a try.

Gentoo differs from major distributions like Redhat and Suse in many ways. For one thing, it is source based (although binary packages exist, but the normal way to install a package is to build it from source). This allows each package to be optimized for the user’s system. For example, code can be optimized for the user’s CPU (e.g. i386 vs. Athlon64), without having to maintain different binary packages for each CPU. It also means that only the relevant features are included in the package. Many packages have optional components, such as KDE vs. Gnome integration, support for ALSA vs. OSS sound, Java bindings, etc. The user generally only needs to configure a global set of flags that determine which features to include, and all installed packages will be customized appropriately at build time. What Gentoo really shines at is its package management. It uses a system called Portage, which is apparently quite similar to the Ports system used by BSD-style Unix systems. In most cases, installing a particular application is as simple as issuing a command like “emerge <application_name>”. The emerge tool is the general interface into the Portage system. This will first check that a version of the application exists that works for your system (e.g. AMD64 / i386) and conforms to the stability level you have configured (i.e. stable vs. unstable or at least not adequately tested), along with all dependent packages. It will then automatically download the source code for the application itself as well as all dependencies, compile, and then install all packages. Users don’t need to hunt for RPMs or manually download, compile, and install source distributions. It took me a little while to get used to this type of package management, but I quickly grew to love it. Once a week or so, a simple “emerge –deep –upgrade world” will upgrade all packages on the system to the latest stable version. This is not necessarily something that would be desired in a corporate setting, but it seems adequate and convenient for a personal desktop.

Another area where Gentoo differs from its competition is the installer, as it doesn’t really have one to speak of. The installation is performed manually by booting in to a simple linux CD and manually issuing the appropriate commands from the command line in order to partition the hard drive, mount and format the partitions, copy over a minimal bootstrap system, etc. Once this barebones Linux system is up and running, emerge is employed to do the rest. Alternatively, an additional set of binary packages can be downloaded and installed to speed up the installation process. I did this during my installation to install things like Gnome and X11, but as the subsequent emerge ended up upgrading pretty much all the packages anyway, I probably would leave this step out the next time and build everything from the latest sources right away.

At this point, my system is running great. All the basic software (Gnome and XFCE desktop environments, the Firefox browser, XMMS media player, etc.) are installed and I am in the process of installing some other interesting applications. Distros like Redhat or Suse offer a lot of packages during the installation, many of which sound very cool, but after the installation I rarely remember which cool packages I wanted to check out. With Gentoo, I install applications when I need them, which keeps my system clean.

As a professional computer user with a reasonable amount of Linux experience, getting Gentoo running was fairly easy, particularly due to the absolutely excellent Gentoo documentation on the website. The installation handbook is very detailed, down to the actual commands that need to be entered. The forums also contain a wealth of information, and the IRC channels are full of helpful people as well. Overall, the community around Gentoo seems very active and newbie-friendly. Still, installing Gentoo is a lengthy and very manual process that I would not recommend to more casual users. Those would probably be served better with a distro like Redhat, Suse, or Mandrake. But if you feel like a little challenge with a nice pay off, Gentoo is well worth a try. I am planning on sticking with it for now.</application_name>