Benefits of Gentoo
This page attempts to summarize the benefits of Gentoo as viewed by its users, with regards to other Linux distributions.
Gentoo is an exceptionally stable, powerful, flexible distribution that leverages installing from source code to provide functionality that would be hard to achieve with a binary-based system.
To use Gentoo requires some in-depth knowledge of the system, so be prepared to spend time reading and learning before choosing Gentoo.
- Due to the structure of the Gentoo system, Gentoo's user community tends to be relatively knowledgeable about low-level aspects of Linux (build processes, kernel configuration, hardware support).
- Gentoo has fostered one of the most helpful communities of any Linux distribution: there are almost a thousand users in the #gentoo (webchat) IRC channel on Libera.Chat at any time.
- Almost anyone can help with virtually any issue a user may have through the various support channels. In fact anyone with some knowledge of Gentoo is encouraged to help others and contribute.
- Gentoo has a well deserved reputation for its community's tendency to build optimized code with demonstrable increases in efficiency over binary-based distributions' "one size fits all" model, using things like PGO and -march=native.
- Gentoo's "USE flag" system allows the user to create an extremely "bare-bones" installation, removing unneeded functions from packages (e.g: removing iPod/iOS support, resulting in smaller binaries that load faster and use less memory). It is straightforward to change these compile flags at a later date, for instance when installing new hardware.
- Not only from source compilation - some big packages are available in binary form too (for faster installing), like Firefox and Firefox-bin, LibreOffice and LibreOffice-bin.
- Compiling from source does not mean that this is harder - it's like on another GNU/Linux distributions (apt or pacman), but takes more time to install a software.
- Dependencies are very granular in Gentoo. Where many other distributions would have one large package, Gentoo will partition dependencies into elemental units. Even if cutting things up means more packages, only the ones for parts that are absolutely necessary will be installed, so this approach takes up less space overall. Dependencies will even be adjusted according to selected USE flags, so everything is always kept tight.
- Save time when Gentoo allows some things that would require involved processes on other systems to be done easily, such as changing compile time options, or creating packages.
- Gentoo allows users to configure which software features they wish to install, instead of the "one size fits all" approach of many binary-based distributions. Choose even core components, such as the init system, or system logger.
- Many compile-time options are easily configurable during installation, rather than imposed by a binary package, mainly thanks to the USE flag system.
- Gentoo can run in a wide range of environments, from embedded systems and virtual containers (LXC, OpenVZ, etc.) through to large cluster machines.
- Gentoo favors incremental updates (instead of major upgrades every 6 months), so the latest packages are available as soon as they are ready.
- Rather than impose a specific package, virtual packages allow key-functionality packages to be switched in or out.
- Gentoo is available for a large selection of architectures, and is particularly easy to port to new systems.
- For many packages, several versions will be available in the repository, in case a different version is needed.
- Where it makes sense, several versions of the same package can be installed simultaneously, thanks to SLOTs.
- Different branches can easily be mixed, when specific versions of a package are needed.
- Gentoo allows the use of extra ebuild repositories to provide packages not yet provided by the main Gentoo ebuild repository. Examples of such overlays are Gentoo's own user repository called GURU, public third party overlays, and local repositories on local file systems. This is similar to PPA on Ubuntu and AUR on Arch.
- Snap is available in official repository.
- Gentoo allows the user to set up ebuild phase hooks to provide customization of the package installation process with personalized code.
- It is relatively easy to add new packages to Gentoo, by writing ebuilds. It is also easy to share them, as ebuild repositories are basically just a directory of files shared over the internet.
- Due in a large part to Gentoo's portage tool's configurability and its source-based approach to software management, Gentoo is relatively well suited to deployment from tiny embedded systems right up to large cluster machines.
- Gentoo allows users to easily patch almost any source-based package during build by providing a patch file in the appropriate directory within /etc/portage/patches.
- For medium to large scale deployments, a binhost may be set up to deploy binary packages to each individual machine, for easy management.
- Package management is built around a formal standard, called the EAPI, so that any software can reliably interact with the package system. This also allows third party package managers to be created.
- Due to the flexibility inherent in Gentoo's Portage tool and USE flags, Gentoo encourages users to build software with only the features they need. This decreases code size and complexity, and tends to increase security.
- The Hardened Gentoo project focuses on increasing the security of Gentoo Linux through a variety of means.
- Gentoo is an exceptionally stable distribution, and each package is tested thoroughly before being made available.
- Because Gentoo is source based, many software development prerequisites are installed. This includes a C-compiler, Linux kernel header files, a Python interpreter, and much more.
- Thanks to slotting, it is often possible to have multiple versions of packages installed at the same time, which makes testing against multiple versions of compilers, or interpreters, easy.
- Many Gentoo packages can pull the latest "head" version from a version control system such as git, to work on an upstream package, or if the latest version is needed for some reason.