Comment by M95D
1 month ago
TLDR: Installation is a pain, initial configuration is a pain and there's always something more to tweak, update is a lesser pain, but still a pain. But it's fun, BDSM-style...
Installation is done by booting a liveCD, manually partitioning your storage, unpacking a Gentoo STAGE3 archive, chrooting in it, doing basic configuration such as network, timezone, portage (package manager) base profile and servers, etc., compiling and installing a kernel and then rebooting into the new system.
Then you get to play with /etc/portage/make.conf which is the root configuration of the package manager. You get to set CPU instruction sets (CPU_FLAGS), gcc CFLAGS flags, MAKE flags, video card targets, acceptable package licenses, global USE flags (those are simplified ./configure arguments that usually apply to several packages), which Apache modules get built, which qemu targets get built, etc. These are all env vars that portage (the package manager) uses to build packages for your system.
The more you use Gentoo, the more features of make.conf you discover. Never ending fun.
Then, you start installing packages and updates (same procedure):
1) You start the update by reviewing USE flags for each added/updated package - several screens of dense text.
For example, PHP has these USE flags: https://packages.gentoo.org/packages/dev-lang/php - mouse hover to see what they do. You get to play with them in /etc/portage/package.use and there's no end to tweaking them.
If you have any form of OCD, stay away from Gentoo or this will be your poison forever!
2) Then the compilation begins and that takes hours or days depending on what you install and uses a lot of CPU and either storage I/O or memory (if you have lots of memory, you can compile in a tmpfs a lot faster).
I'm not sure it is OK to compile the updates on a live server, especially during busy hours, but Gentoo has alternatives, including binary packages (recently added, but must match your USE flags with theirs), building packages remotely on another system (distcc), even on a different arch (crossdev). You could run an ARM server and build packages for it on a x86 workstation. I didn't use "steve", so I can't tell you what wonderful things that tool can do, yet.
3) Depending on architecture, some less used packages may fail to compile. You get to manually debug that and submit bug reports. You can also add patches to /etc/portage/patches/<package> that will automatically be applied when the package is built, and that includes the kernel.
I recommend you to run emerge with --keep-going to have the package manager continue after an error with the remaining packages.
4) When each package is done compiling, it's installed automatically. There are no automatic reboots or anything. The files are replaced live, both executables and libraries. Running services continue to use old files from memory until you restart them or reboot manually - they will appear red/yellow in htop until you do.
There were a few times, very very few, when I had crashes in new packages that were succesfuly built. It only happened on armv7, which is a practically abandoned platform everywhere. In those cases you can revert to the old ones and mask the bugged version to prevent it from being updated to next time.
5) Last step is to review the config changes. dispatch-conf will present a diff of all proposed changes to .ini and .cfg files for all updated packages. You get to review, accept, reject the changes or manually edit the files.
That's all. Simple. :)
That's a very well painted picture for what to expect. I am gonna try it soon, since it's been on my task list for too long. Thanks :)
I always tell people this:
With Red Hat, Anaconda is the installer. With Ubuntu, ubiquity.
etc ...
With Gentoo -- YOU are the installer. This means you have to be ready to perform -- more or less manually -- many of the tasks automated in other distributions. I sorta see this as the same as a tutorial level in a video game: you learn how to read and follow the wiki which is essentially the key to success in Gentoo.
No, I don't agree. That would be Slackware. I guess you never used that one before... It doesn't even do dependency management.
Portage/emerge is very much automated and once you set it up it runs updates with just a confirmation, unless you feel the need to tweak something.
Slackware has no package manager or installer. It's just an extra step removed.
I didn't say Gentoo has no package manager (it does; and it's great!)
Download image from https://www.calculate-linux.org/ - put it on USB flashdrive.
And it's literally yes, yes, next, next - the defaults are pretty good.
1) Calculate Linux is 100% Gentoo with more profiles (e.g. server, desktop-kde, desktop-gnome ...etc) and after switching from vanilla Gentoo to Calculate - I didn't need to tweak any use flags of any packages.
Profiles are so good that everything works nicely together
2) There are prebuild binaries for your profile use-flag combo - can't recall last time I had to wait for something to compile
3) Much less likely to happen since you get binaries for everything - but there's additional cl-xxx tooling that makes even that easier
4) I don't think that's a bad thing. Though sure I could agree that having option to automatically restart services would be nice.
5) Yes - and you can also archive and basically have git-log on conf changes.
> Calculate Linux is 100% Gentoo with more profiles (e.g. server, desktop-kde, desktop-gnome ...etc) and after switching from vanilla Gentoo to Calculate - I didn't need to tweak any use flags of any packages.
If that's your thing, sure. I find even Gentoo too automated for my preferences. I'm using the most basic from the available profiles and tweak everything manually in package.use. I stopped using openrc and switched to just sysvinit/inittab.
But then, if you want binary packages and such, why use Gentoo or a fork?
This "I'm using the most basic from the available profiles and tweak everything manually in package.use" sounds like me 10-15 years ago.
Then one day at work I wanted to print something and I think I needed to add LDAP and CUPS use flags ... Rebuilding world with those new flags was not finished by the time I was back from lunch break, or maybe it even failed.
Then I discovered Calculate and it's desktop (e.g. KDE) profile turned out to have all those useful use flags already set in it's profiles.
Anyway ...
IMHO main reason to choose/stay with Gentoo/Calculate is flexibility and choice (like not having to use systemd, but also being able to). Habit is a part too - though due to work I've got familiar with CentOS and Ubuntu.
I don't necessarily want binary packages. Sure they are handy/convenient for speed/ease/etc. And even though I can't recall last time I needed to tweak some package/feature use flag (maybe V4L2 virtual camera in OBS?) - I really don't want to give that flexibility up ... As without it - it would be back to manually figuring out compile/run-time dependencies when all you want is just slightly differently configured/built package.
[dead]