Gentoo Repository News
Profile upgrade to version 23.0 available - 22/03/2024 00:00 GMT
A profile upgrade to version 23.0 is available for your architecture. The new 23.0 profiles enable some toolchain hardening features and performance enhancements by default, and standardize settings. You can find the list of changes on the wiki tracking page [1]. We strongly advise to precisely follow the upgrade instructions found below. The 17.0, 17.1, 20.0, and 22.0 profiles will be marked deprecated in 2 months and removed a year later. The exact dates may depend on the architecture, see [2]. Upgrade instructions Note 1: If you have manually changed your CHOST to a value different from what the stages and profiles set, you may have to do that in the future too. In that case you should know what you are doing, hopefully; please read the instructions with a critical eye then. Note 2: In case you are already familiar with binary packages, you should be able to add "--getbinpkg" to the emerge calls to speed things up. The use of binary packages is completely optional though, and also not as much tested as the source-based upgrade path yet. 1. Ensure your system backups are up to date. Please also update your system fully and depclean before proceeding. glibc older than 2.36 and musl older than 1.2.4 is not supported anymore. 2. If you are still using one of the long-deprecated amd64 17.0 profiles (other than x32 or musl), then first complete the migration to the corresponding 17.1 profile. Instructions can be found at [3]. 3. If you are currently using systemd in a split-usr configuration, then first complete the migration to the corresponding merged-usr profile of the same profile version. Details on how to do this can be found in the news item [4]. If you are currently using openrc, migrate to 23.0 first, keeping your disk layout. If you want to move from split-usr to merged-usr, do that afterwards. 4. Run "emerge --info" and note down the value of the CHOST variable. 5. Edit /etc/portage/make.conf; if there is a line defining the CHOST variable, remove it. Also delete all lines defining CHOST_... variables. 6. Select the 23.0 profile corresponding to your current profile, either using "eselect profile" or by manually setting the profile symlink. Note that old profiles are by default split-usr and the 23.0 profiles by default merged-usr. Do NOT change directory scheme now, since this will mess up your system! Instead, make sure that the new profile has the same property: for example, OLD default/linux/amd64/17.1 ==> NEW default/linux/amd64/23.0/split-usr (added "split-usr") OLD default/linux/amd64/17.1/systemd/merged-usr ==> NEW default/linux/amd64/23.0/systemd (removed "merged-usr") A detailed table of the upgrade paths can be found at [5]. Please consult it. In some cases (hppa, x86) the table will tell you to pick between two choices. What you need should be obvious from your *old* CHOST value (from step 4). 7. Delete the contents of your binary package cache at $ rm -r /var/cache/binpkgs/* 8. In the file or directory /etc/portage/binrepos.conf (if existing), update the URI in all configuration such that they point to 23.0 profile binhost directories. The exact paths can be found in the table at [5], too. 9. Rebuild or reinstall from binary (if available) the following packages in this order, with the same version as already active: emerge --ask --oneshot sys-devel/binutils (you may have to run binutils-config and re-select your binutils now) emerge --ask --oneshot sys-devel/gcc (IMPORTANT: If this command wants to rebuild glibc first, do *not* let it do that; instead, abort and try again with --nodeps added to the command line.) (you may have to run gcc-config and re-select your gcc now) and the C library, i.e. for glibc-based systems emerge --ask --oneshot sys-libs/glibc or for musl-based systems emerge --ask --oneshot sys-libs/musl 10. Re-run "emerge --info" and check if CHOST has changed compared to step 4. If the CHOST has NOT changed, skip to step 13 (env-update). Otherwise, 11. Recheck with binutils-config and gcc-config that valid installed versions of binutils and gcc are selected. 12. Check /etc/env.d, /etc/env.d/binutils, and /etc/env.d/gcc for files that refer to the *OLD* CHOST value, and remove them. Examples how to do this can be found in the similar procedure at [6]. 13. Run env-update && source /etc/profile 14. Re-emerge libtool: emerge --ask --oneshot libtool 15. Just for safety, delete the contents of your binary package cache at $ again: rm -r /var/cache/binpkgs/* 16. Rebuild world: emerge --ask --emptytree @world [1] https://wiki.gentoo.org/wiki/Project:Toolchain/23.0_profile_transition [2] https://wiki.gentoo.org/wiki/Project:Toolchain/23.0_profile_timeline [3] https://www.gentoo.org/support/news-items/2019-06-05-amd64-17-1-profiles-are-now-stable.html [4] https://www.gentoo.org/support/news-items/2022-12-01-systemd-usrmerge.html [5] https://wiki.gentoo.org/wiki/Project:Toolchain/23.0_update_table [6] https://wiki.gentoo.org/wiki/Changing_the_CHOST_variable#Verifying_things_work
Posted By: Andreas K. Huettel
installkernel is no longer implicitly installed - 26/02/2024 00:00 GMT
/sbin/installkernel is a script called by the kernel's "make install" as well as by the distribution kernel's post-install phase. If you are reading this then chances are you use and rely on installkernel[1] and what follows is essential for you. Previously sys-kernel/installkernel was implicitly installed on many systems via a dependency in sys-apps/debianutils. This dependency was toggled by the "installkernel" USE flag, and enabled by default. Until recently, sys-apps/debianutils was in turn pulled in by app-misc/ca-certificates, an essential package installed on many systems. However, this dependency of app-misc/ca-certificates on sys-apps/debianutils was removed[2]. As a result many users may find that sys-apps/debianutils and therefore sys-kernel/installkernel are no longer part of the dependency graph and will therefore be cleaned up by "emerge --depclean". Removing sys-kernel/installkernel from your system WILL change the way kernels are installed by "make install"! Instead of the versioned /boot/vmlinuz-x.y.z that you are used to, "make install" will simply copy bzImage (or equivalent for your arch) into /boot. This image may not be picked up by your bootloader or its configuration tools. To avoid surprises from such implicit dependencies from happening again in the future, the dependency on sys-kernel/installkernel in sys-apps/debianutils is removed. And as such, sys-kernel/installkernel is only installed on the system if it is either explicitly selected or pulled in via the distribution kernels (e.g. gentoo-kernel(-bin)). User Action Required (users of manually managed kernels) ==================== Users who manually configure, compile, and install their kernels, i.e. users of the sys-kernel/*-sources packages, and who wish to continue to use sys-kernel/installkernel, must ensure that it is explicitly selected by emerging it: emerge --noreplace sys-kernel/installkernel Users who find that sys-kernel/installkernel has already been cleaned from their systems and are therefore affected by the change in kernel installation described above should re-install sys-kernel/installkernel and then re-install their kernel. emerge sys-kernel/installkernel cd /usr/src/linux # (or other location of the kernel sources) make install No manual action is required for users of the distribution kernels: - sys-kernel/gentoo-kernel, or - sys-kernel/gentoo-kernel-bin, or - sys-kernel/vanilla-kernel [1] https://wiki.gentoo.org/wiki/Installkernel [2] https://gitweb.gentoo.org/repo/gentoo.git/commit/?id=6e6ccafd58bc7401fa371d2f255d72ddae0131e6
Posted By: Andrew Ammerlaan
GRUB upgrades - 01/02/2024 00:00 GMT
When booting with GRUB, it is important that the core image and modules have matching versions. Usually, running grub-install is sufficient to ensure this. On the UEFI platform, grub-install allows the core image to be placed in two different locations: EFI/gentoo/grubx64.efi This is the location used by grub-install without options. EFI/BOOT/BOOTX64.EFI This is the location used by grub-install --removable. On upgrades, it is common for users to mismatch the grub-install options they used for the current and previous versions of grub. This will cause a stale core image to exist. For example: /boot/efi/EFI/BOOT/BOOTX64.EFI (grub 2.06 core image) /boot/efi/EFI/gentoo/grubx64.efi (grub 2.12 core image) /boot/grub/x86_64-efi/*.mod (grub 2.12 modules) Booting this system using BOOTX64.EFI image would likely fail due to a symbol mismatch between the core image and modules. [1] Re-runing grub-install both with and without the --removable option should ensure a working GRUB installation. However, this will clobber any BOOTX64.EFI image provided by other loaders. If dual-booting using another boot loader, users must take care not to replace BOOTX64.EFI if it is not provided by GRUB. References: [1] https://bugs.gentoo.org/920708
Posted By: Mike Gilbert
installkernel new USE flag systemd-boot - 30/01/2024 00:00 GMT
/sbin/installkernel is a script called by the kernels 'make install' as well as by the distribution kernels post install phase. sys-kernel/installkernel provides two paths for installing the kernel: - the traditional installkernel, or - systemd's kernel-install In sys-kernel/installkernel versions lower then 20, systemd's kernel-install would default to the layout used for systemd-boot (layout=bls). To improve backwards compatibility with the traditional installkernel this is no longer the case in versions 20 and up. Instead the default layout setting when no other USE flags are enabled is a compatibility layout similar to the traditional installkernel (layout=compat). User Action Required (systemd-boot users) ==================== Users of systemd-boot should: - enable the "systemd-boot" USE flag when upgrading to >=sys-kernel/installkernel-20. See also: https://wiki.gentoo.org/wiki/Installkernel
Posted By: Andrew Ammerlaan
Merging of installkernel-gentoo and installkernel-systemd - 18/01/2024 00:00 GMT
/sbin/installkernel is a script called by the kernels 'make install' as well as by the distribution kernels post install phase. It was previously provided by sys-kernel/installkernel-gentoo or sys-kernel/installkernel-systemd. The functionalities of these two packages have now been merged into sys-kernel/installkernel. sys-kernel/installkernel now provides the systemd USE flag to switch between the traditional installkernel (formerly sys-kernel/installkernel-gentoo) and systemd's kernel-install (formerly sys-kernel/installkernel-systemd(-boot)). Additionally, the new sys-kernel/installkernel with the systemd flag enabled now provides a default install.conf configuration file which ensures that it will work out-of-the-box with no configuration (other then USE flag configuration) required for most setups. Details on configuration and customization can be found on the installkernel wiki page [1]. Below we provide the most important migration notes. User Action Required (GRUB users) ==================== Previously sys-kernel/installkernel-gentoo provided kernel installation automation for users of GRUB via USE=grub. The new sys-kernel/installkernel provides the same functionality, which now works with both the traditional installkernel and systemd's kernel-install. Users of GRUB should therefore: - check that the "grub" USE flag is enabled to ensure that systemd's kernel-install uses the correct layout that grub-mkconfig understands. Users of GRUB may wish to explicitly choose either the traditional installkernel or systemd's kernel-install, in which case they may do so via USE=-/+systemd. sys-kernel/installkernel is renamed from sys-kernel/installkernel-gentoo, therefore no user action is required to upgrade to the new package. User Action Required (systemd-boot users) ==================== Previously sys-kernel/installkernel-systemd provided kernel installation automation for users of systemd-boot. sys-kernel/installkernel provides the same functionality but only via systemd's kernel-install. Users of systemd-boot should therefore: - ensure that the "systemd" and "systemd-boot" USE flags are enabled when upgrading to >=sys-kernel/installkernel-14. Users who are using the distribution kernels (i.e. gentoo-kernel(-bin)) should enable the "dracut" USE flag on installkernel as well to pull in and enable the dracut initramfs generator. This is enforced by portage. Note that the automagic behaviour of the dracut kernel-install plugin is removed in sys-kernel/installkernel. Users who rely on the dracut plugin automatically generating an initramfs when installing the kernel must enable the "dracut" USE flag to retain this behaviour. The upgrade path is enforced by sys-kernel/installkernel-systemd-4, which is just a wrapper pulling in >=sys-kernel/installkernel-14 with the "systemd" flag enabled. sys-kernel/installkernel-systemd may be removed after installing >=sys-kernel/installkernel-14. emerge --noreplace sys-kernel/installkernel emerge --depclean sys-kernel/installkernel-systemd User Action Required (rEFInd users) ==================== Previously sys-kernel/installkernel-gentoo provided kernel installation automation for users of rEFInd. The new sys-kernel/installkernel provides the same functionality, which now works with both the traditional installkernel and systemd's kernel-install. Users of rEFInd should: - ensure that the "systemd-boot" and "grub" USE flags are NOT enabled when upgrading to >=sys-kernel/installkernel-20. Additionally, users of rEFInd may want to - enable the "refind" USE flag to install an icon file alongside the installed kernel image which rEFInd will pick up at runtime. Users of rEFInd may wish to explicitly choose either the traditional installkernel or systemd's kernel-install, in which case they may do so via USE=-/+systemd. sys-kernel/installkernel is renamed from sys-kernel/installkernel-gentoo, therefore no further user action is required to upgrade to the new package. User Action Required (users of other bootloaders and custom scripts) ==================== Users who have previously relied on custom installkernel or kernel-install plugins should either ensure that the same kernel installation method will be used after upgrading to >=sys-kernel/installkernel-14 (via USE=+/-systemd) or migrate these custom plugins (details are on the wiki [1]). Users of bootloaders other than GRUB, systemd-boot or refind may want to retain the traditional /boot layout. They may do so by: - ensuring that the "systemd-boot", "grub" and "refind" USE flags are disabled. Optional: Unified Kernel Images (all users) ==================== Users who wish to use Unified Kernel Images[2] (e.g. for EFI stub booting) may do so by - enabling the "ukify" and "uki" USE flags. Which will automatically install a bootable EFI executable to the EFI system partition. The UEFI firmware, as well as, Systemd-boot, GRUB and rEFInd are capable of loading Unified Kernel Images. For more details see the wiki page on Unified Kernel Images[2] [1] https://wiki.gentoo.org/wiki/Installkernel [2] https://wiki.gentoo.org/wiki/Unified_kernel_image
Posted By: Andrew Ammerlaan
Separate /usr now requires an initramfs - 05/01/2024 00:00 GMT
Systems which have /usr and / on separate filesystems have always required a dedicated initramfs to bring up both partitions. Systems where both /usr and / are on the same filesystem may use an initramfs if they wish, or choose not to. Historically, Gentoo has tried to make the separate filesystems use case work anyway. Despite all our efforts, it is broken and continues to get more broken under various configurations. The only workable solution is to support separate /usr but only when an initramfs is present. For more details on why this is broken, see: - https://bugs.gentoo.org/868306#c10 - https://bugs.gentoo.org/902829 - http://freedesktop.org/wiki/Software/systemd/separate-usr-is-broken - https://bugs.gentoo.org/915379 - https://github.com/trofi/nix-guix-gentoo/commit/43d84cc00af530ef912d9c98448b64d6b5282907 - https://github.com/trofi/nix-guix-gentoo/commit/8f194519982fbfabb6b3ca84c0806b1a379b5d06 - https://bugs.gentoo.org/825078 In 2013, Gentoo policy determined that separate /usr without an initramfs was officially no longer supported: - https://projects.gentoo.org/qa/policy-guide/filesystem.html#pg0202 - https://gitweb.gentoo.org/data/gentoo-news.git/tree/2013/2013-09-27-initramfs-required/2013-09-27-initramfs-required.en.txt?id=a79dd69b0cca439bc0c483c9193c79e0554819d0 11 years later, the support is being withdrawn. On 2024-02-05, we plan to begin work on decommissioning existing workarounds and will not accept any more. User Action Required ==================== If you have separate /usr and are not currently using an initramfs, you have until 2024-02-05 to set up an initramfs. If you do not, then at some point on or after this date, routine system upgrades will leave your system unbootable. For details on setting up an initramfs, see: https://wiki.gentoo.org/wiki/Initramfs/Guide
Posted By: Eli Schwartz
LXD to lose access for its image server - 28/12/2023 00:00 GMT
Earlier this year Canonical took their LXD project away from the community-run LinuxContainers and brought it under their own administration. While doing so, they removed management access from non-Canonical employees, along with other things. This caused LXD to be forked and so Incus was born. Incus would pull updates from upstream LXD to stay compatible. Recently LXD was re-licensed so Incus can't benefit from its code anymore. Therefore Incus will become a truly independent project. However it is LinuxContainers community that still hosts most LXD images for free, for Incus and LXD. With them unable to benefit or use LXD anymore, LinuxContainers have decided to stop building and hosting LXD images. Realistically they can't support LXD given these restrictions. They will start limiting access immediately in 2024 for non-LTS users which is LXD >=5.18, or "unstable" in Gentoo. LTS LXD, or "stable" (5.0) in Gentoo will be allowed to pull images until May (an estimate), or until Incus LTS will be released. Times are subject to change. What can you do? ================ 1: Switch to Incus. 2: Deploy your own image server. 3: Wait and see what Canonical does. For unstable users the matter is rather critical, while stable users have the luxury of waiting. Note that a downgrade from unstable to stable is not possible due to database schemas. Please follow or take a look at Gentoo bug #920527 with more information about this situation, and updates e.g. for timetables. Bug: https://bugs.gentoo.org/920527
Posted By: Joonas Niilola
CUPS no longer directly depends on its filters - 20/11/2023 00:00 GMT
Reasons ======= Historically, net-print/cups has both depended on and been a dependency of net-print/cups-filters. The latter is required for usability of a CUPS printing setup, but also must build against the former's libraries. This results in an ugly dependency cycle, and forcing the entire CUPS printing setup wherever USE=cups is enabled on a framework. Current upstream work on CUPS has focused on modularizing the codebase. There are now several packages, and there will be more in the future. Installing net-print/cups-filters is no longer sufficient to ensure all components are installed. In the future, when CUPS v3 is released, filters will be exclusive to legacy printers, and largely replaced with IPP Everywhere.[1] A more future-proof way to install a CUPS production printing setup is needed. User Action Required ======= cups-filters is required for current versions of CUPS. To prevent depcleaning if you are a CUPS user (and it was not installed just as a dependency for something else): emerge net-print/cups-meta If cups-browsed support is desired, add the following package.use: net-print/cups-meta browsed [1] https://openprinting.github.io/current/#the-new-architecture-for-printing-and-scanning
Posted By: Eli Schwartz
Plasma Profile to enable PipeWire, Wayland support - 21/05/2023 00:00 GMT
Reasons ======= Gentoo's Plasma profile has not had any sound server enabled since the days of KDE's own aRts. As the way we output sound has changed dramatically in the years since - using wireless or often several devices, dynamically connected and shared between multiple systems, a modern desktop environment is expected to handle this effortlessly by default. In Wayland sessions, the video functionality of PipeWire is not only used for screensharing but also to take screenshots and -recordings or simply to cast window content onto task managers' window previews. This is why PipeWire and Wayland enablement are happening at the same time. Plasma Wayland support has come a long way and we consider it stable enough for daily use with a lot - if not all - systems, even if some known papercuts remain [1]. Therefore it makes sense for Plasma profile to provide sane default settings. Changes ======= New global USE flags enabled: pipewire, pulseaudio, screencast, wayland New package.use default: media-video/pipewire[sound-server] We want broad sound server support in packages, and these settings will make PipeWire act as our PulseAudio server where there is no native PipeWire support. Impact On Happy X Users ======================= Minor. Most dependencies were already required with kde-plasma/plasma-desktop and its dependencies. Upcoming stable versions of kde-apps/spectacle and kde-apps/krfb will depend on (K)PipeWire unconditionally. No one will lose their X session, but will have the option to easily log in to a working Wayland session at any time. It is possible to set USE="-wayland" against these changes, but it will amount to no dependency savings, just micro-optimisation in affected packages. User Action Required ==================== In order to enact all changes: emerge -1avUD @world Check out how to configure PipeWire for your purpose [2][3] In order to keep a PulseAudio or ALSA-only setup: Invert above new USE flag settings as needed, see also [2]. In order to avoid media-video/pipewire completely: This can only be achieved by losing basic task manager, screenshot/screen recording/sharing functions as provided by Plasma and KDE applications. [1] https://community.kde.org/Plasma/Wayland_Showstoppers [2] https://www.gentoo.org/support/news-items/2022-07-29-pipewire-sound-server. html [3] https://wiki.gentoo.org/wiki/PipeWire
Posted By: Andreas Sturmlechner
OpenSSH directory configuration changes - 11/05/2023 00:00 GMT
Gentoo's OpenSSH package will start using the /etc/ssh/sshd_config.d and /etc/ssh/ssh_config.d directories for both Gentoo default settings and use by the administrator. The default /etc/ssh/sshd_config and /etc/ssh/ssh_config files will respectively include configuration files in /etc/ssh/sshd_config.d/* and /etc/ssh/ssh_config.d/*, making it possible for all customization and configuration to be done via 'drop-in' files if desired. Most users will not need to take any action. The only action required is if specific Gentoo defaults were overridden in the past, as the new ebuilds will install them to new files in the new listed directories. Such admins will need to edit the new files in the new directories or make overrides in their own files in the new directories using a smaller number in the filename. For example, if the system administrator has commented out 'AcceptEnv COLORTERM' in /etc/ssh/sshd_config, they will need to do the same in the new /etc/ssh/sshd_config.d/9999999gentoo.conf file.
Posted By: Sam James