135 comments

[ 0.65 ms ] story [ 188 ms ] thread
I used Gentoo for over a year, from at least early April 2020 until my migration to GNU Guix in early December 2022. Got into DWM, LTO, minimal systems. It taught me more than any other distro, and there's still a lot I miss about Portage and the Gentoo community. Still use `functions.sh` to style my personal Bash scripts. Functional package managers have not nurtured the same culture around diverse USE flag support and quality packages + docs, and I wish I could just glue them together. Some day.
Good news! One of the Google Summer of Code projects for Guix is indeed adding something similar to the USE flags (called Parametrized Packages)[0]

---

0: https://lists.gnu.org/archive/html/guix-devel/2023-05/msg001...

That's really interesting, thanks for sharing!

Prikler's suggested syntax feels apt, as sugar for (I imagine) a set of native Guile parameters around the remaining fields of the package definition. Infrastructure will need created to implement inheritance, possibly at the level of fluids, in a manner that complies with the Guix maintainers preferences.

Thinking about how I tended to manage my USE flags (ie. through `package.use` as a directory), I think that the balance of package-level impact and operating-system-level syntax (how will services be affected?) will be interesting to see developed

> Slackware, BTW, is ranked 39th - higher than Gentoo.

Proof that DistroWatch ranking is the most meaningless metric.

Unique ISO downloads aggregated from all mirrors might be a better metric. If that's possible...
Downloads of most OSS software is so heavily skewed by CI pipelines, but I'm not sure what shape that follows. Maybe it's an exponential curve where the more popular you are the more CI systems you're in so the exponentially more downloads you have. Maybe that's useful but I'm not sure.
Gentoo barely has an ISO download; in fact my most recent installations I just used an Ubuntu live CD iirc.
I don't need a latest Gentoo image to bootstrap a new system. The stage3 is more important, and that can come from dozens of mirrors.

Edit: I download a new image like once a year.

That wouldn't work either.

It would heavily favor distros that require major upgrades every six months or whatever over rolling release distros.

With Gentoo, the ISO doesn't matter. You can use any bootable linux distro. I generally used knoppix back in the day, these days I generally use systemrescuecd. I installed Gentoo using the Ubuntu installation disk once because it was the first bootable linux disk I saw. I've used Gentoo as my primary OS for almost two decades and I've only ever downloaded an ISO maybe 5 times.

Gentoo was the "gateway drug" that got me moved over from FreeBSD. I loved FreeBSD ports and Portage scratched that itch with a Linux kernel. Eventually the need for less excitement and a little more predictability caused me to move on. I also miss it at times.
I cut my Linux teeth on Gentoo around when Sabayon Linux was released. Ubuntu didn't make me feel like enough of a hacker, so I had to bash my head against configuring grub through xserver until I felt like I got it. I learned a ton, but it likely wasn't the best use of my time.
19 years of compiling the damn thing, and 1 year of actually using it.
Not if you have enough threads...
(comment deleted)
> This really is a true story, and she doesn't know I put it in my comic because her wifi hasn't worked for weeks.

Ahhh, good times!

I once made the mistake to compile .. ahem .. attempt to compile KDE on an EEE pc (remember those toys from ASUS?). Three days later the damn thing stopped working. I think it fried the CPU or something. Never again.
Gentoo's artwork and color schemes were and still are quite pleasant.
Unfortunately, for the ordinary user, the best solution still is Ubuntu, esp. if you're doing ML work, most tools assume you're using Ubuntu and have the necessary drivers and libraries.

I would love to switch to OpenSUSE TW (which I think is better than Fedora despite both being RPM based). I just hate the way apt works (think about all the dependencies that remain on the system when uninstalling a program).

How dare you! /sarcasm

I remember finding an unmaintained Gentoo box in a corporate environment at a client's server room. It hadn't been updated for an indeterminate period of time and was running normally. However, it was a security risk so I decided to try to update it.

On Ubuntu? This would be relatively simple (this was circa 2008~2009 or so, with the box being 2 or 3 years old). On Gentoo? Impossible. Everything I tried ended up with random errors, and googling them led to more and more complexity. I just wanted to update stuff related to security, and nothing worked.

I eventually gave up and moved the app to CentOS (IIRC) and got rid of the Gentoo box. I also found RPM more irritating than APT, but much better than Gentoo.

I see a lot of pearl clutching about mainstream distros like Ubuntu and a lot of unguarded praise of distros like Gentoo, Arch or whatever. However, every single time, I remember that incident. Gentoo at home? Sure, if it works for you, do it. In a work environment? Not unless you pledge to maintain it forever.

Gentoo's a rolling release, and if it gets too far behind you're better off just "reinstalling" over it and re-emerging all the programs. The source tarballs and builds continually get pruned.

Ubuntu sometimes handles upgrading better as you can find the archived DVDs even for very ancient versions, but things will break.

CentOS doesn't even bother pretending upgrading is a thing.

I recently gave the Gentoo docker images a go and was relatively impressed. However, I quickly ran into an error where it told me to do something but that something required reading 80 pages of things I didn't have time to read, but I read them anyway. After reading all of that, I still didn't understand what I was supposed to do.

The docker images are really cool though, I was impressed.

While I've never let a Gentoo system go for "2 or 3 years", it's not supposed to be left running like that. If you do your weekly/monthly updates like a normal person, it's generally fine.

Could it be made easier? Sure. But why put the effort into allowing such an anti-behavior?

(comment deleted)
Next time this happens, switch to git as synchronization method for the gentoo portage tree and checkout a tree that is, say, 3 months ahead of the last update date. Once that update is done, fast forward another 3 months and repeat until recent. It'll take significantly longer to update this way but it'll be relatively painless.
Yeah - in the past if you waited say a year before doing an update you had a serious risk of incompatibilities that Portage couldn't fix (the intermediate "bridge" packages were no longer in the tree, etc).

I would often go several months without an update and occasionally ran into this issue. So I committed to doing an update once a month.

I'd never use Gentoo at work unless it was a very dedicated server with only a few items installed.

If you need security and stability there is one name for you: Debian.
Joined 18 years ago. Still compiling my KDE (but should finish soon). Then will take care of Firefox. My year of the linux desktop will be 2025. Great times ahead!
Just kidding of course. Gentoo people, you taught me so much about Linux, Operating Systems in general and made me start reading docs in their primary language to get the newest information (I’m German). You taught me so much, I’ll always keep fond memories about Gentoo though I moved on.
I still have nightmares about building OpenOffice.

And yeah, oh boy, KDE. The only half-decent (actually worked, didn't glitch out or crash constantly, didn't assume you had memorized all the switches for the equivalent command-line tools, actually had all the features that anyone who used such programs would have called MVP-tier) GUI CD burning program on Linux in the early to mid '00s was a KDE program, (K3B, I think it was called?) and it'd drag in half of KDE if you installed it, so, would take hours to compile. Ugh. Here I am just wanting to mostly use Windowmaker and some GTK programs, and I've gotta compile kde-libs because I burn music CDs or isos sometimes.

Yeah same, Gentoo made me switch to xmonad :)
Yeah, it probably wasn't until later when they broke up KDE into more modular packages, and that mess went away. Personally, though, although it took a long time to compile, KDE worked just fine on my machine.

OpenOffice? I think I did it a few times before switching to the binary package.

k3b was awesome - thanks for that memory!

I am so glad I installed Gentoo on a headless box 15 years ago to use as a server (no GUI.) I learned so much about Linux by following the Gentoo handbook and being forced to use SSH and the console for everything, and I absolutely believe it (along with my highly curious personality) is what shaped me for a successful career in tech.

And for what it's worth, I'm still using OpenRC on it and not systemd, a completely free choice that users have with a Gentoo system.

It's such a breath of fresh air to use Portage and Gentoo utilities compared to other stuff. It's designed so well, has beautiful colours, and the terminal output is clean of random warnings or errors that you constantly see with other distros (e.g. when booting or upgrading packages.) All the terminal output from Gentoo tools is super meaningful and formatted consistently.

I do think I have better familiarity with Linux as a result of all those years of using Gentoo.

Nowadays I'm (mostly) happily using Ubuntu. Every once in a while on my Ubuntu machines and on various Red Hat-derived servers I notice a massive dependency tree getting pulled in and pine for a USE flag, but it passes.

At the time I first encountered Gentoo (about as many years ago, I still remember RedHat pulling in X because I wanted mpg123 to play music from the command line) it was the most customizable package-supported distro available.

From what I understand, there are more now that support that level of customizability, such as Arch.

What I really love about Gentoo, and why I still use it, is that it just happily upgrades without forcing things on me almost all the time. Sometimes I have to eselect news read and make a decision about something that's going out of support, but that's very uncommon. It's a rolling release that doesn't suddenly tell me I'm using systemd or insist that now I have to use nginx or whatever.

And since it's from source, all the compiler toolchain bits are already installed.

And I can funroll my loops and fomit my pointers.

Everyone should install Gentoo at least once. It's not hard, the documentation is excellent (up there with Arch) and you learn things. You may not want to, but you do.

Oh, and that color documentation? That made such a huge difference! Everything else was HOWTOs and black and white and here was well-written documentation with colors to help you understand the fixed and movable parts of the commands; chef's kiss.

Ooooo sys-kernel/gentoo-sources-6.1.28 just dropped, time to go! I'm coooooooompiling!

Also genkernel is one of the nicest interfaces to rolling your own kernel you're ever going to encounter. It's a joy to work with.

>From what I understand, there are more now that support that level of customizability, such as Arch.

Kind of (having previously used gentoo but now using arch). Gentoo has the philosophy of 'here, you can build this package exactly how you like, and then configure it'. Arch is more like 'here's the package built as close to how the developers intended, and here's how to configure it'. You can build stuff yourself on arch but it doesn't encourage it, and a lot of decisions are made explicitly because they makes maintainers lives easier, not provides features to users.

The feature I really like about Gentoo is I can entirely “turn off X” and never have to worry about any GUI stuff being pulled in or compiled on my servers.
Honestly it's the sleekest OS I've ever worked with, it has exactly what I want and nothing I don't. Sure if I forget to upgrade for a while it's a headache sometimes but I've learned such an insane amount about Linux it's a clearly winning tradeoff. That's on top of being absurdly lightweight, fast booting, and super customizable.
Arch is not bad but last I looked it didn't have what Portage calls "slotting" ie the ability to have multiple versions of the same package installed side-by-side. It's especially helpful when eg. you are upgrading postgres and need multiple versions operational for the cross-version dump/restore.

How would that work on arch?

Never used Arch, but I'd be surprised if Arch doesn't support it. How any modern distribution can survive without some semblance of slotting befuddles me.
Which distros do you use that support this form of slotting?
Gentoo, clearly ;-)

I just assumed something so "basic" would be supported on all major distros.

I'm just an Arch user and not an expert but AFAIK it's not officially supported (by Arch's packaging system). One is encouraged to update the entire system before installing anything new. If you installed just MyCoolCalculator vLatest and it pulled in the update for ImportantWidelyUsedDependencyX, dependent apps could potentially/do break, because multiple versions of that dependency are not kept. At least AFAICT.

The AUR is said to provide options for non-latest software, and I guess you have options like Flatpak too.

Does Gentoo's slotting support cross-compiling? I was following a guide on it and was pleasantly surprised how advanced the cross-compiling support was in Gentoo.
As a Gentoo and Arch user, SLOTs are really overstated as a feature; a near-identical result can be produced by using multiple package names, possibly combined with a "provides" type feature. As a concrete example, Gentoo has fuse:2 and fuse:3 whereas Arch has fuse2 and fuse3. Searching for sys-fs/fuse:* in (what used to be called) gentoo-x86 yields only lxd, so the SLOT is providing little value here.

Categories are a similar issue in Portage: emerge graphviz asks if I want dev-python/graphviz or media-gfx/graphviz, but obviously the default should be the latter. Arch instead has python-graphviz and graphviz, which is much better design. Categories fix naming collisions in exactly the wrong way: dumping it on the user and giving no sensible default.

For PostgreSQL specifically, Arch provides postgresql and postgresql-old-upgrade, so as long as you don't wait years to upgrade your PostgreSQL, you'll be fine. It's a reduction in flexibility but brings with it a significant reduction in complexity: nobody can properly maintain half a dozen Postgres versions anyways, so just keep the latest two around.

I'll agree that slots are useful... for whatever reason on arm, uboot and ATF won't compile with the latest binutils and gcc. Slotting lets me switch back to the older stuff to build new firmware, while keeping the rest of the system current.
Isn't nix basically an entire distro based around the idea of slotting? I've never dug into it but it seems an interesting concept, at least.
No idea, I've never used nix because they trampled all over FHS.
Arch does this with certain packages, usually libraries, by appending the version to the package name.

And of course the bigger things...like python2 vs python, and the multiple openjdk stuff.

There is no built-in support that I know of. The official repos usually only contain the latest version of each package (Postgres being an exception).

However, every time I've needed older library versions I've found that somebody already uploaded a suitable PKGBUILD to AUR (Arch's user-contributed build-from-source system).

For instance, the current version of PHP in Arch is 8.2.6. If you need an older version there is php81, php80, php74, etc. available in AUR. If it didn't exist, just take the PKGBUILD for the current version, modify it to build the older version, then upload it to AUR so other people don't have to re-do the work. It works well in practice.

As someone who ran Gentoo on several boxes, including my main desktop PC, for about 15 years, and still keeps one last server on Gentoo partly because of nostalgia, the upgrading is fine only if you update everything regularly and frequently (every few days), in order not to fall too far behind.

Otherwise you get bit by dependency conflicts in your @world updates which portage cannot solve with huge list of package updates (even with "stable" branch or arch keyword) the error output is loooong and useless, and it is detective work to figure out what exactly is the problem.

In the last few years, I also had several problems with python completely breaking, leaving me without a working package manager (portage is written in python). This was always during python version upgrades (e.g. 3.10 to 3.11), which the docs docs would have you believe is as simple as changing a variable in portage configfile.

I was always able to monkeypatch portage to get it working, but it is a problem.

I like Gentoo a lot, but I think I liked it more ~ten years ago, when I had more time. If I had to reinstall my remaining Gentoo box from scratch, I'd probably use something like Debian, since it is boring and reliable.

Portage should be rewritten in Go. That Python dependency is so awful and slow.
And then portage will tell to Mother what packages you have installed. /s
Python can be fast — dnf is pretty fine, and although it has no relation to package managers, my most favorite example is the kitty terminal emulator. Most of it is written in Python, but you don't feel that at all. It feels like pure C. I refused to even try it for a long time, but have been hooked for several years now.
RHEL uses a separate copy of python (called platform-python) for its most critical components, like the dnf package manager. I wonder why Gentoo doesn't do the same. Of course, it's pure bloat, but only until you're left

> without a working package manager

Ah, the nostalgia! I can vividly recall the thrill of setting up Gentoo on my trusty Pentium 2 300MHz laptop. Then dist-cc came to the rescue, linking my laptop to my father's server in the basement. Compiling Phoenix (yes, that's what Firefox used to be called) was a lengthy process, spanning roughly 20 hours. Nonetheless, the sense of achievement and the memories created during those marathon compilation sessions were truly fantastic.

Also - the constant fiddling with CXXFLAGS even though my knowledge of C++ was fairly limited.

Back in 2005-2006 (I was 14-15), I've been going through a bunch of open source operating systems. I started with Ubuntu, tried Mandrake, Red Hat, SuSE (this was all before Mandriva, Fedora or openSUSE became mainstream), did LFS (Linux From Scratch), and eventually ran stuff like NetBSD and OpenBSD on desktop as well.

Playing around with Gentoo is a distinct memory: downloading the two CD images too two nights on my connection at the time. Compiling everything felt like I knew way more about computing than I did. I felt smart, powerful and in some sense, an outlaw.

It had a profound impact on the fact that I still work with software, many years later.

Thanks to everyone involved.

I think, if you were installing BSDs and Gentoo as a teen, you were already consigned to, like, hardcore work with software. ;p
Gentoo has a special place in my heart as one of the earliest distros I used and one that I ended up using for many years. Days were spent compiling packages. I'm still fond of the documentation, package system, and init system, among other things, though I have switched to distros that require less effort.

It was also the distro I used when I first started contributing to an OSS project. And it was the reason why that project eventually added filters to limit what CXXFLAGS were used, since we got tired of having to debug weird bugs caused by crazy combinations of GCC flags:

https://www.shlomifish.org/humour/by-others/funroll-loops/Ge...

And yes, I also went through a phase of having tens of options in CFLAGS/CXXFLAGS. Good times.

Haha, I remember looking for the most aggressive optimization settings, not understanding them and then finding my system was stable for all of 20mins after boot. It was a lot of fun when I was young and had lots of time to pour into that sort of thing.
> Below is a plot of Gentoo’s rankings on DistroWatch

Distrowath is a questionable metric. But it doesn't mean that decline isn't correct.

Not necessarily. I think a lot of the "decline" is because more beginners are switching to Linux and look for easy distros, so Gentoo takes up less of the market share without actually becoming less popular.
I had a colleague once who was a real Linux geek, knew so many distros, compiled the kernel himself, etc.

His comment on Gentoo: "Dude, Gentoo. That's for the kind of people who mod their cars."

I went through the slackware Gentoo arch nixos path and now I don't think there's any reason to use gentoo over nixos.
Writing this from my Gentoo machine. Been using it since 2009 - sans a 4 day 'affair' I had with FreeBSD, only to learn nothing comes even close to Portage in terms of granular control of stuff.
Gentoo was the first distro I tried. Wow that learning curve was steep.

Yeah the guide was great, but I had a ring binder with printed documentation for installs. Every time I installed Gentoo I had to get that thing out. It took ages.

I picked up a lot doing that but I wouldn't wish that starting point on anyone. I should have looked at one of the many easier distros.

It's not you Gentoo, it's me. I'm just not good enough.

I've been trying to like Gentoo for over four years, ever since I installed it on my primary laptop. I love the idea of having the fine-tuned control that Gentoo offers, and I love the idea that everything I install is tailored to my specific system.

But despite my best intentions I have not mastered it - in fact I barely feel like I understand it. When I remember to update it a couple times a week everything is pretty smooth. Go much longer than that and all bets are off. If I go on a long vacation I dread coming back to a Gentoo update. I just don't have the discipline to keep up.

Lately portage has been scolding me because some random packages are trying to install different versions of openssl. I've been ignoring it for weeks while I muster the courage to solve it.

And in my experience this kind of problem is super common. Either I'm pulling multiple versions of a package into the same slot, or I'm trying to merge a masked package, or some package is trying to put files in a place it doesn't own, or who knows...

Every time I try to solve one of these issues it's like I'm starting from scratch. I read manpages, online docs, bug trackers. I try various incantations of emerge flags. And eventually I show up the IRC channel with my tail between my legs.

Fortunately, the IRC community is extremely knowledgeable and can usually fix my problem in no time. But I hate having to ask for help, and I never seem to get closer to solving them myself.

The other major issue I have is convenience: it sometimes takes so long to install a new package. I get it - that's what you expect with a source-based distro. But man I did not understand just how much compiling time I'd need. Krita releases a new patch version? There's a couple hours with my laptop fans blasting. My laptop has easily spent 10x or 50x the time compiling Krita vs actually running it! And that's just one random program; god help you if you want Firefox on the same machine.

Anyway, on my next computer I'll probably install Arch.

Arch is also rolling update, and has no trivial chance to break when upgrading, I learned this painfully a few years ago. switched to Ubuntu, which is boring but stable.
I've used Arch btw for like the last 3 years with no broken upgrades, fwiw! (I also update once a week. And use the "lts" kernel.)
"But despite my best intentions I have not mastered it - in fact I barely feel like I understand it. When I remember to update it a couple times a week everything is pretty smooth. Go much longer than that and all bets are off. ... I just don't have the discipline to keep up."

You are so close to enlightenment! When you can repair a broken Gentoo box (which is its default state), whilst still providing service, you are a man my son (pronoun assumption - soz!)

I do run Arch on all my personal stuff these days (DebIan n Ubuntu at work and others as required) but Gentoo was my first real love and it taught me to never fear a completely broken Linux box. Provided the broken bit is not screwed hardware then Gentoo can survive nearly anything.

I have a box - a VM running on esxi in my attic that got a bit behind. By bit, I mean 2013ish - I've just checked out /etc/kernels to get an idea. You can use git to make /usr/portage go back in time and then gradually update your box to now. It's not something that I recommend for the impatient but you can do it. The worst bit was dealing with things like Let's Encrypt CA changes and finding old packages. I often had to download them manually and slap them in the right place.

You complain about compilation times but back in the day I had a laptop that I left running on a glass table for over a week (worried about heat) cranking through what would eventually become @world. From memory, it was for the GCC 3 -> 4 upgrade and the advice at the time was compile everything until your eyes bleed and then do it again. Nowadays an ABI change is handled rather better and with better advice.

The Gentoo wiki is a very decent repository of info (I wrote some of it, and probably ought to revisit and update my offerings).

The contrast with other approaches to software is striking when it comes to docs n that. I've recently "solved" an MS Outlook MAPI to Exchange snag that might have been easier to diagnose if I had access to the source or logs that weren't solely designed for people with access to source code.

Do stick with it and do ask for help. You are very close ...

Before gentoo I would sometimes wipe the os and start over but no more. Now I can fix anything
Distrowatch statistics don’t correlate with real world. They say it themselves here https://distrowatch.com/dwres-mobile.php?resource=popularity

As of now, Gentoo is 53rd - below the already dead centos. And Arch is in the 60’s.

Top ten as of this moment:

1 MX Linux 2773

2 EndeavourOS 2326

3 Mint 2078

4 Manjaro 1547

5 Fedora 1204

6 Pop!_OS 1198

7 Ubuntu 1138

8 Debian 1106

9 Lite 746

10 openSUSE 721

Imo only 4-5 make sense on that list.

Fair. Any alternatives to distrowatch? Google Trends isn't that great either.
I am not aware of one. The user base seems quite fragmented and decentralized so not sure if there is a way to gauge it.

You can probably gather some basic data from packages like popularity contest but the data is going to be quite limited.

Almost all of the top ten are based on either Debian or Arch.
I do love Gentoo and have had it as my home OS for ages. I like to describe it as "the patient person's Linux".. it definitely provides many learning opportunities and sometimes roadblocks however if you get stuck, the IRC channel is very helpful indeed, got me out of many-a-bind! Sorry to see it's popularity declining.
I started using Gentoo in 2002 or 2003, can't remember. The compilation was neat, but really you used it because it was the only mainstream distro that had the latest packages all the time and the documentation needed to keep it all working with highly active forums.

Once Arch showed up with the same kind of philosophy but you didn't have to compile it, the writing was on the wall.

I feel like the custom compilation is the point
I owe Gentoo for making me proficient with linux and the command line, and starting my long passion for programming and building dynamic web apps. I remember compiling my custom build for days on my parent's Gateway PC with a pentium 3 and liking Gentoo because I felt like I could make it faster by picking -O3 for everything which you wouldn't get with the mainstream distro's :). I also remember just liking the color scheme and the attention to the CLI experience (funny how little things like that can matter!) I ran my first websites off that little machine. Wouldn't be doing what I'm doing today without Gentoo.
> For quite a while, Gentoo was one of the “cool” distributions.

Indeed, eating the learning curve and looking the toolchain in the eye is important.

Also important:

- not spending excessive time watching gcc output scroll by

- not falling prey to USE exuberance and having the system 'splode

Hence: Arch.

USE exuberance is not bad - if you do it at the package level. I did it aggressively for many years without problems. I stopped only because it became time consuming.
Before moving on to NixOS, I used to manage every USE flag on the entire system. Every single package install or upgrade would prompt a quick look into any USE flag changes and potential reconfiguration. It was really nice knowing your system with that sort of intimacy and _really_ lowered the amount of effort required to make changes to the system. But... nothing can compete with declarative and reproducible at the whole system level.
Gentoo definitely was interesting thing. One thing of note is that it spawned couple of other interesting distros too, I'm aware of Exherbo and Funtoo, the latter notable for being developed by the founder of Gentoo.
ChromeOS is actually based off of Gentoo.