moving to another city, and gentoo
I’ve moved! I’m now in the amazing city of Austin, TX and into an equally amazing job. I love it, and the people I work with! One of the things I needed to get used to at the new place was using Gentoo on the desktop. Up until then, I had mainly standardized on Ubuntu in various flavors. I love the ease of use, and I love how… well… pretty it is. But coming from both camps, I wanted to give a basic breakdown of the differences, and why you might want to give Gentoo a try yourself.
The biggest difference between Gentoo and most other distributions is that every package installed in your system is compiled from scratch. There are benefits on both sides of the argument. In a binary distribution, the speed of installing apps is just amazing. Using apt is just… wonderful. The problems come in when you want to install an application that isn’t in the apt repository, or when the version you want to install is much newer than the one in apt. At this point, your choices include either waiting a while (possibly a long time) for the version to get updated, or compiling your own. Simple enough, but what happens when you go to install an application that depends on the one you compiled? Apt doesn’t see the compiled version in it’s internal database, so it tries to install it’s own. So your choice there is to install the other application from source as well. Don’t get me wrong, apt is awesome. It’s just that in certain instances, it would be nice to have a little more control.
In addition, think about compiling. Every application you compile has certain flags that enable different functionality. It might be a choice between using ALSA or OSS, or whether to let the app have SVG support… there are a million things. Well, in order to be all things to all people, the application in the apt repositories are compiled to work with pretty much everything. The side-effect of that is a potential for slowdowns. When you think about it, it only makes sense that the more you allow your program to do, the more CPU cycles it will take in running. And while one itsy bitsy flag enabling some random feature might not make a huge diff, what about scaling that across an entire operating system? If you have ever compiled your own kernel, it’s the same reason you don’t compile in every feature possible… you pick and choose for the most efficiency.
So those are the main reasons why I’m quickly becoming a Gentoo fan. I love Ubuntu for people who are new to Linux, but for those of us that know (or at least should know) a little more about our OS, Gentoo is a great fit.
Gentoo’s package management system is called Portage. It consists of what are called ‘ebuilds’, which are basically just scripts that tell the Portage system how to compile a given application. So for every application that is available, there’s an ebuild for it in the Portage tree. But there’s more! Remember the version issues you run into with binary package managers? There are ebuilds available for many of the latest builds of various software, and nearly every version number in between. So by changing a few configs, you can install an older more stable version, or you can allow Portage to see and install some pretty bleeding-edge stuff. Not only that, but there are some builds that actually use CVS to bring down the absolute latest version, and compile it automatically.
It’s hard to complain about the selection of software available on Gentoo through Portage. It’s got pretty much everything and the kitchen sink available for installation. And the great thing is, like all package managers, it understands interaction between different software. That means if you go to install WhizBang package, and WhizBang requires the SupaSecret KungFoo package, Portage will compile SupaSecret first, and then compile WhizBang. Not only that, but there’s even a program that will rebuild all of your dependencies, throughout the system, in case one gets hosed.
Binary package managers have methods (sometimes) for upgrading the system to the newest release. With Gentoo, the entire system is in a sort of continuous development. That means that there’s no specific ‘version’ of Gentoo… you install it, and then compile the packages (whatever the newest versions are) that you want. It’s very customized. That means that it’s very easy to bring your system up to date… “emerge –sync && emerge -update -deep world” will go through and find everything in your system that’s out of date, and update those packages. Swanky.
In all fairness, the advantages DO come with a price. The main thing that people complain about with Gentoo is the time that it takes to compile. For example, I installed it for the first time by myself on my laptop. It’s an AMD64 3200+ system, and it took slightly over 15 hours of compiling before the system was really at a usable state. By usable, I include compiling X, Gnome, the KDE libraries, WiFi drivers, and the various software I normally use. At that point, I was able to start really going through and finding other applications that I wanted… I’d say, all things considered, I’ve probably spent around a week of the last 1.5 months compiling. Of course, a lot of that was just me getting used to the new system, playing, compiling, removing, etc. From a blank drive, the process would go a lot quicker now.
To be honest, when I first thought about having to wait for EVERYTHING to compile, I didn’t like it. I was accustomed to the speed of binary managers that just download a compressed file and run an installer. Now though, I think I’ve adopted a slightly different view. Once the base system is done, compiling packages here and there really doesn’t take much time since the dependencies are all already fulfilled. In short, I think the advantages are well worth the wait. If I’m about to install a program, I just have a synapse that fires telling me to go grab a cup of coffee while I wait. Not hard at all… a little more casual, in fact. While I certainly don’t look forward to the time investment of installing another Gentoo system, the stability and efficiency is such that I don’t think I would be happy any other way. And you know… there’s also a big difference in the size of the OS… compiling everything individually keeps you from installing useless software that you’ll never even look at. As of this writing, having nothing else on my list (at all!) in need of installation, and with a few things that could be removed, about 8 gigs are used. That includes data files and all. Compare that to a base install of a binary distro, or even (gasp!) Windows.
So there you go. If I’ve inspired you to try Gentoo, please let me know. If I can help you over some of the beginning hurdles, leave a comment and I’ll get in touch. If not, maybe after a few years of getting more familiar with your Linux distribution, you’ll decide it’s worth it. If nothing else, I hope this has been educational.