Hacker News new | past | comments | ask | show | jobs | submit login

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.




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?


Arch has a package [0] called postgresql-old-upgrade that tracks the second-last postgres version specifically for upgrading. It's described in their Wiki [1]

If you need older versions, they're available via AUR, called postgres-*-upgrade [2]

[0] https://archlinux.org/packages/?name=postgresql-old-upgrade

[1] https://wiki.archlinux.org/title/PostgreSQL#pg_upgrade

[2] https://aur.archlinux.org/packages/postgresql-12-upgrade


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.


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.


Just use docker?


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.


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


Portage should be rewritten in Go. That Python dependency is so awful and slow.


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.


And then portage will tell to Mother what packages you have installed. /s


>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.




Join us for AI Startup School this June 16-17 in San Francisco!

Guidelines | FAQ | Lists | API | Security | Legal | Apply to YC | Contact

Search: