A Gentoo Review

Gentoo is a distribution which I have wanted to try for a long time and have only just in the last few days had a chance to play around with it and more importantly, get a system up and running! :) One of the main reasons I want to do a review as there aren’t really that many around, and the ones that are around seem to have no idea what it’s actually like to use Gentoo as a system installed from scratch and set up and configured to one’s likings. Further a lot of the same things seem to be said about it which are evidence once again of someone not being intimately familiar with it, but rather are repeating what they’ve heard in the echo chamber that is the internet.

One of the main reasons that Gentoo is I guess hard to review is because it’s not a regular desktop Linux distro. There is no “look” to it, nothing that visually defines it. It’s all under the hood, and as such I understand why it, and distros like it (for example Arch) seem to get a lot less press, especially on sites like distrowatch because there’s nothing “representative” to show. It’s all about how it runs at its core which is generally less interesting for most people out there. It was inspired by the BSDs and you can see that a lot in how it’s set up and run. In terms of its target audience, it would be power users and intermediate+ Linux users.

What is Gentoo

Gentoo is a rolling release distribution[1] that installs new software through emerge (emerge can be likened to apt-get, pacman and yum in that it’s used for installing, removing and updating software). Where it differs from other distributions is that it does not install binary versions of its packages, but rather downloads the software you desire to install and compiles it on your system according to its ebuild. This puts it in a fairly unique position in the Linux world, but there are 2 distributions that I believe are similar and I’ll cover those in a moment.

My Setup

I ran Gentoo in a VM in VirtualBox and had a fairly vanilla install which had me installing the full KDE desktop, vim (really disappointed that nano was chosen over vim, the fanboy in me died a little bit) and a few other minor apps. The only real drastic thing I had done (if you can call it that) is change my version of GCC from the default 4.8.5 to 4.9.3 because the xorg drivers for virtualbox wouldn’t compile otherwise. I made this change at the beginning before compiling any other software in order to ensure that I kept things as simple as possible.

Using Gentoo day to day was not really a problem aside from 2 things: First, the above mentioned virtualbox drivers, and 2 the fact that I couldn’t get audio to work until I started from scratch. This I believe was a use flags issue as I had initially not set up my profile to a desktop one and despite fiddling around with numerous settings and trying various things - I couldn’t get it to work.

Aside from those initial birthing pains, updating the system and running it day to day has been fine. I’ve experienced no bugs or other signs of system instability. Overall everything was working smoothly and it left me with plenty of time to explore the Gentoo world and begin to find out how it ticks and how to make the most of it. From start to finish, the set up took about 10hrs of compiling software plus various other administration. Maybe a bit less, and definitely a lot more if I include Chrome into my time factoring. Ultimately, don’t expect to compile have have a desktop system up and running in Gentoo in anything less than I’d say about 3-5hrs, depending on how fast your system is.

That all said, I’ll begin my review by going back to the comparisons I mentioned earlier. So, the 2 distributions that would match closest to Gentoo in my opinion would be Arch and Linux From Scratch and I’ll briefly compare the 2 against Gentoo now.

Gentoo and Arch

Gentoo and Arch are fairly similar in that they’re both “work your way up from the bottom” distros and setting up everything is done from the terminal. Both are also rolling release which means you are always on the bleeding edge and both of course feature a package manager of sorts which handles dependencies and basically makes your life generally easier to keep up to date and install things without having to worry about chasing down what you may or may not need.

The differences are that Gentoo is source code based, not binary. In other words when you want to install vim, you download it, and any potential dependencies and using ebuild scripts it compiles the software with any USE tags that you’ve set up. I’ll cover these more in a moment, but the ebuild scripts are very similar in concept to PKGBUILD scripts found in the AUR which performs a similar function of downloading and compiling software and performing dependency checks.

Gentoo and LFS

Linux From Scratch is even more of a “meta” distribution than Gentoo. It basically teaches you how to build a minimal Linux system from scratch, hence the name. There is no official package manager, and everything that you do is done manually. When you finish the LFS book, and if the software you want to install is not in the BLFS handbook either, you have to figure how to get it installed and working yourself.

The similarity between it and Gentoo however are they both allow great customization on what software you want to install, and what features you wish to compile in and not and as a result of being sources based, they require a lot more manual input and intervention than even Arch requires of you. I almost think of LFS as Gentoo without the training wheels and Gentoo explores a lot of concepts on a bit of a higher level than if you were actually compiling software yourself, but this exposure definitely helps in the long run if you need to compile software yourself in the future, or if you wish to give LFS a bit of a test drive.

Pros and Cons of Gentoo

So, after having installed Gentoo and played with it for about a week I can give you my initial impression but will do so with the following disclaimer: Using a system for a week is not the same as using it for a month or a year, the more time you spend in a distribution, the more you learn about its quirks, what makes it tick and allows you to adjust to its way of doing things. In other words, take what I say with a grain of salt.

Pros

  • USE flags: The amount of granular control that you have means that you can enable or disable any features that you so desire in a package. I’ve found that using equery helps finding out what use flags a package has and what they do. This is very helpful getting a package down to the raw essentials you need if that’s what you’re after. A helpful addition are profiles. Setting up one of these helps reduce the burden of selecting all the right USE flags for things like a KDE or GNOME desktop, or simply if you want to have a hardened system. USE flags are also a great simple introduction to configuration of source packages if one ever needs to manually compile software, it’s an abstraction layer that works well.
  • emerge: emerge is the bomb. There are probably many things to like about it, but for me I like how I can put commonly used options with it into make.conf and not have to worry about having to do that extra typing every time, and it just feels cleaner than creating an alias for that command. Another feature I like is parallel fetching and how you can install more than one package at a time. This really cuts down on the idle time. Great feature, wish to see it in other package managers *ahem, pacman*. I only wish the download progress when such features are enabled were shown in the same screen, but it’s a small price to pay.
  • General configuration: I like the general configuration in Gentoo for simplyfying one’s use of emerge and how straight forward it is to use OpenRC to manage system services. While I definitely like systemd (an opinion that seems unpopular in the Linux world) it is nice to have a system that is more user friendly and familiar to those used to init systems. Since you are using the command line all the time in a system like this, I feel like Gentoo has done a real good job of making this easier on the user to do what they need to do.
  • You learn Linux: I didn’t come to Gentoo as a noob, I’ve used my share of distros and have been using Linux on and off now for quite a few years but I know that really learning Linux has become a bit “harder” now than it used to be. The first distro I really started playing with was Ubuntu 4.10 and back then, even though it was a new user friendly distro, you still had to hit the command line to edit things like which repos you had access to and you had to update the system from there too. You still got exposure to the command line, which is in essence what Linux is all about. With the push to GUI based tools in most popular distros, it means less knowledge is transferable when you do decide to switch ship and makes it harder for you to fix things yourself when the time comes. Distros like Gentoo and Arch are becoming more and more fringe nowadays :)

Cons

  • USE flags: Yep, this gets featured twice. While the customization options are nice, and there are features like profiles which help simplify an obviously complicated system, it’s still something difficult to keep on top of. While there are probably numerous examples, I’ll use one that I encountered myself. When looking to use Chrome during my first install, I noticed that to install it, I also had to re/install a bunch of packages to go along with it. A bit of a headache really considering Chrome takes a couple hours to compile, just by itself. When setting it up for the second time, I came across a youtube video which mentioned adding icu to the list of global flags at the outset helps when installing it later on and that turned out to be right. Knowing which flags to set to save you hassle further down the line seems like something that requires a lot of research and a trial and error.
  • Packages: Packages face the same problem and like the above, I would add that admittedly, once you have a system set up you probably won’t modify it too much but with Gentoo it does become a nuisance when you do want to install new programs and then find out after the fact that a new program requires a bunch of others to be recompiled as a result. Along side this, trying to go for a minimal install can and does often end up biting you. From the few videos and blogs that I came across about Gentoo I noticed there seemed to be a theme where people went for a full install rather than the minimal version because they didn’t want to have to worry about conflicts arising later on. Like USE flags though, you might not always know what you need up front so the “better safe than sorry approach” seems to be applied. The irony of this however is that for all that customisation that you have at your finger-tips, you end up sacrificing it because trying to optimize “too much” becomes too much of a headache, so it makes me wonder if the level of “safe customization” really makes it any better than say something like Arch.
  • Setup time: It really sucks how much time it takes to compile, and it seems a bit frustrating that you have to organise your life around system updates (i.e. leaving your PC on overnight or having to plan ahead updates). Furthermore, if you have something go wrong and you try to fix the issue by make some changes that require recompilation or the downloading of new packages - it could take hours for you to find out if this fixed the problem or not and it could turn out to be time utterly wasted. I came across this many times when searching through the Gentoo forums.
  • Rolling release “light”: It doesn’t seem that all packages are at the most latest versions, for example I was surprised to see the default version of GCC is 4.8.5 instead of 5.2 like in Arch, another rolling release distro. Another example would be Plasma 4 vs 5 (which again is available in Arch). Now while I understand that they’re still working out the hinks in the system and that’s why they’re not using it by default, I do recall one of the leading arguments back in the day was that it was bleeding edge. This, along with the ability to customize and the supposed performance gains meant that it was a very attractive offering to power users. Given current hardware performance, building from source in my experience doesn’t really make too much of a difference nowadays (except in edge use cases perhaps) and since not all packages are the most recent, the only thing still going for it I guess is that it’s really customizable.

Final Thoughs

I like Gentoo. I really do, and in fact I plan on installing it on my desktop after I’ve played around with it enough in my VM trying out various things and getting a good feel for how to go about certain things in a safe manner (such as switching profiles from KDE to GNOME and not having that ruin the system - might be able to do that safely but I want to spend a bit of timing looking into it and trying it out). The thing is though, it’s one of those distros I can tell will be hard to use on a long term basis.

The reason for that is simple, on a distribution like Ubuntu, Suse or Fedora you have a unified theme and experience. Generally everything looks beautiful and things tend to not stick out like they don’t belong. This level of care and attention is not found in a distro like Gentoo. You have to put the work in yourself to get a nice looking distro with a pleasant user experience. When you combine this with the fact that the hassle to maintain a system like this is far above and beyond the average user distro, you eventually move onto something that just stays out of your way while you get to business doing other things.

For that reason, I don’t think that most of the people who try Gentoo will stick with it in the long run. I think it’s a good distro to help you get more familiar with the command line and learning how to maintain a Linux system, but overall probably one that will become too much of a headache for most. So, my final thought is if you’re new to Linux (but have had some time to try a few distros out and aren’t too intimidated by thec command line) you should probably give Gentoo a try for a couple months. I think you’ll get a real kick out of the experience and learn a lot.

Gentoo too full on?

If you’re new to Linux or at least still think of yourself as in the beginner range, I strongly suggest trying Arch. I think Arch while having its own weaknesses compared to Gentoo, has a lot of strengths that I think put it in an overall superior position if you’re looking for a permanent home. It’s binary based, and while still very hands on you will have a running system much faster than you would with Gentoo.

Best of luck!

Misc

[1] Though I could not find any explicit statement mentioning that they’re rolling release, they are most definitely a rolling release distribution as noted in their FAQ here, they state “Gentoo’s packages are usually updated shortly after the upstream authors release new code”. Further, they are often described as a meta distribution, and rightly so but for simplicity I will just refer to them as a distribution in this post.