Why We Like Gentoo
It’s about flexibility. Not satisfied with the Desktop centric direction of Ubuntu? Need to run the latest LAMP stack but keep the rest of your system ‘stable’? Gentoo gets a lot of negative attention due to a perception that it’s difficult to install, manage, and keep stable. I hope to convince you that you can overcome these obstacles and reap the benefits.
First let’s look at some of advantages:
Gentoo provides the ability to install the bleeding edge right along-side your stable packages. This means you have the control to keep certain packages at certain versions while still keeping the rest of your system up-to-date.
For example, I had to support a LAMP setup that required the latest PHP but only worked on a specific version of MySQL. This was easily accomplished with the unmasking and masking features of Portage. Had we been on Ubuntu or CentOS, we would have had to compile our own version of MySQL anyway. While one or two custom packages may be no big deal, once you start down the road of installing things out-of-band, you might as well use a distro that makes compiling specific versions trivial.
What about creating custom RPM or DEB packages? That would certainly be a better than compiling things willy-nilly, but wouldn’t that be more difficult than just masking/unmasking packages? Even if the specific version you need is not or no longer in portage, in my opinion, creating a custom ebuild is much simpler than the equivalent rpm or deb build tools.
So, we can install specific versions of packages, "big deal" you say. “I don’t need that. Ubuntu’s versions are fine”. One of the other key advantages of Gentoo is customizing the packages themselves. Quite a lot of Linux software is customized at compile time. PHP is one of those packages. Want to install PHP with nginx using PHP’s FastCGI process manager? No need to install the apache module then (which would also pull in apache as a dependency). This is easily achieved by setting the USE flags (-apache fpm).
Gentoo’s USE flag system is the key to this package customizability. Gentoo comes with a set of default USE flags (the system profile) that can be overridden at the system level (in /etc/portage/make.conf) or on a per-package basis ( in /etc/portage/packages.use). This means we can, for example keep any X, QT, GTK, or audio libraries off our server.
Frequent Incremental vs Infrequent Radical Updates
One of the interesting concepts to come out of the development world recently is the idea if Continuous Integration (CI). This is similar to the open source philosophy of "release early, release often". The idea is to deploy tested applications frequently, sometimes many times a day. That way, any problems that do arise are easier to track down and deal with. Gentoo's rolling release nature makes this easy to accomplish at the server level.
Of course you still need to test your updates and possibly schedule downtime so you will have to decide how frequently you want to perform updates.
Installation and management
One of the most common criticisms of using Gentoo is the installation and compile time. While it’s true that it can take longer than and binary distro to install and update, this is less and less true today. PC hardware is faster than ever and getting faster. And honestly, how often do you need to install the OS on a server? Gentoo is a rolling-release which means only once. And since we’re talking about servers, you should probably be using some sort of virtualization technology these days anyway. That means a single (or maybe a few) base images that can be instantiated an unlimited number of times.
Gentoo does have a learning curve. You will need to know what what to do when conflicts arise. The first few times you install it can be daunting. Taking the time to learn these things is well worth it in my opinion. Even if you don’t end up using Gentoo in production, you can learn a lot about Linux in general with it.
Is Gentoo unstable? First how do we define unstable? If mean do the packages crash or segfault more? I would contend that Gentoo is more stable. For the most part Gentoo uses vanilla upstream sources so the packages are as stable as each vendor provides. In my experience, the vast majority of system instability comes from the hardware anyway.
If we’re talking about stability in the sense package versions and availablity, it’s true that Gentoo is less stable. But,that’s kind of the point! The good news is that Gentoo makes it trivial to pin specific package versions using masking and unmasking facilities and local portage trees.
Some of the most compelling criticisms of Gentoo are actually business related. It’s unfortunate, but Gentoo is simply not as popular as the other common distros. This leads to a situation where there are simply not as many Linux admins that are familiar with Gentoo thus limiting the hiring pool. I however believe any highly-qualified Linux admin can apply their knowledge and learn Gentoo quite easily.
If you need to support an application from a commercial vendor, you’re also most likely not going to be using Gentoo. This is a case where you should be using what that vendor recommends (or even provides).
So should you consider Gentoo for your production servers? I would hope you would consider it! If you can use the flexibility and customizability then certainly Gentoo would be a great choice. Even investing the time to learn the install and package management would probably help in understanding the other distros better. Of course if another distro gets the job done and provides everything you need you may as well stick with what works.
Rest assured, Cloud Ops Group is not only familiar with Gentoo, but the other major distros as well. We've designed and supported systems build around Red Hat (and derivitaves) and Ubuntu. We'll still recommend the most appropriate system for you and your project.