Alpine Linux 3.23 debuts Linux kernel 6.18 LTS, GCC 15, LLVM 21 and updates desktops

  • Alpine 3.23 debuts Linux kernel 6.18 LTS, GCC 15, LLVM 21 and updates desktops such as GNOME 49 and KDE Plasma 6.5.
  • The apk-tools v3 package manager improves security, performance, and index and package formatting, while maintaining compatibility with v2 for now.
  • Progress is being made towards /usr-merge, linux-edge is being replaced by linux-stable, and firmware, nftables rules, udev, and systemd subpackages are being reorganized.
  • The distribution cleans up obsolete packages, extensively updates its ecosystem, and offers images for multiple architectures and scenarios.

Alpine Linux 3.23

Alpine Linux 3.23 It is now available And it arrives loaded with significant changes both at the system core level and in its package ecosystem. This version solidifies Alpine as a lightweight, highly secure distribution, especially popular in container and embedded systems environments thanks to its use of musl libc, BusyBox and a minimalist approachIf you work with Docker, Kubernetes, or resource-constrained devices, you'll find what this edition offers quite interesting.

Beyond the classic package update, Alpine 3.23 introduces significant improvements: a new LTS kernel, the leap to GCC 15 and LLVM 21, the arrival of apk-tools v3Changes to Intel's firmware tree, reorganization of subpackages (udev, systemd, nftables), cleanup of obsolete software, and a firm step towards the model of /usr-merge for the file system. All this without abandoning its modular nature based on OpenRC and without imposing a specific graphical environment.

Updated kernel, toolchain and desktop environments in Alpine Linux 3.23

One of the highlights of Alpine Linux 3.23 is the kernel update: the distribution now relies on the Linux kernel 6.18 LTSThis version brings new features, more modern drivers, and a solid foundation for long-term maintenance. This change, similar to the one introduced in Alpine 3.18It benefits both servers and containers and embedded systems that require stability and support for up-to-date hardware.

In the area of ​​compilers, Alpine takes a significant leap by adopting GCC 15 as main compiler and update your entire package tree to compile with this new version. This includes performance improvements, new optimizations, and changes to support for C, C++, Rust, and other languages ​​that benefit from the GCC infrastructure. The team recommends reviewing the GCC 15 change documents and migration guide For projects that compile their own code, as there may be necessary adjustments to flags, legacy code, or dependencies.

Along with GCC, the LLVM toolset is also being updated: Alpine 3.23 now offers LLVM 21.1.2 as the main version. Previous versions of clang/LLVM 20 are still available in the repositories to facilitate transitions, but have been removed. Older LLVM/Clang packages that are no longer used in the distribution itselfIf you maintain software that depends on older versions, the recommendation is to port the code to LLVM 21 or rely on external builds.

On the desktop, although Alpine doesn't force any default graphical environment, this version is updated to the latest releases: it includes GNOME 49, KDE Plasma 6.5.x and LXQt 2.3, in addition to the composer Wayland sway 1.11which acts as a replacement for i3 in X11. This opens the door to modern workstations based on Alpine.

Alpine Linux 3.23 debuts a new generation of package manager: apk-tools v3

After several years of intensive work on the main branch of the project, Alpine integrates into this version apk-tools v3, the third generation of your apk package managerThe change is intended to be transparent for most users: updating from APK v2 should be safe and seamless, as long as you use the usual command-line tools.

The situation changes if you develop tools that link directly against libapkIn that case, Alpine warns that There may be incompatibilitiesTherefore, it's advisable to review the code, headers, and documentation associated with the new libapk. Although the package manager's core is being updated to version 3, the distribution has decided for now to... maintain the index and APK package format v2, delaying the full adoption of the new format until a later version.

APK version 3 provides support for a new, more flexible and secure index formatIt is designed for modern hashing algorithms and more robust cryptographic signatures. Furthermore, the new package format incorporates Zstd compressionThis improves both installation and update speed and reduces disk space usage. New commands and improved configuration management have also been introduced. a cleaner scheme for defining repositories, which makes life easier for those who maintain mirrors or internal infrastructures.

The Alpine team strongly recommends using the command when upgrading from one version to another (for example, from 3.22 to 3.23). APK upgrade – availableThis command forces APK to use the latest versions of packages compatible with the new branch, preventing strange mixes between different branches that could leave the system incomplete.

Transition to /usr-merge in the file system

For some time, Alpine had been preparing a major change in the way it organized its file system: the adoption of the model /usr-mergedIn this design, traditional routes such as /bin, /sbin and /lib They cease to be independent directories and become simple symbolic links that point to their equivalents within /usrIt is a move that brings Alpine closer to the standard followed by many other modern distributions.

The goal of this redesign is the Unification of executables and libraries into a single tree under /usrThis reduces duplicate paths, simplifies software packaging, makes the runtime environment more predictable, and better aligns the system with how modern containers and rootfs work. For Alpine, which is heavily focused on small images and containers, this consistency offers clear advantages.

Initially, it was planned that the Alpine 3.23 would introduce the system in a widespread manner. fully /usr-merged in new installationsHowever, due to technical difficulties, the global change has been postponed. The distribution itself has stated that it will be released. a new official calendar which details when this model will be imposed as mandatory, most likely around future branches such as 3.26 or 3.27.

Even so, Alpine 3.23 already allows this design option: new installations can be /usr-merged if the user decidesTo do this, during the installation process it is possible to set the environment variable BOOTSTRAP_USR_MERGED=1 before executing setup-diskIn this way, the resulting system is born with the structure already fused.

If you already have an existing installation and want to migrate, the distribution offers a manual method via the merge-usr packageOnce installed, simply run its binary as the root user to perform the file system restructuring. The official Alpine announcement and wiki describe in more detail the steps and precautions to take, especially on production servers.

There is a special case that Alpine emphasizes: users who maintain the / and /usr partitions on separate file systemsThis configuration is not officially supported and, in the context of /usr-merge, requires extreme caution to prevent the system from failing to boot. Official documentation outlines the necessary steps in these scenarios and strongly advises against future-proofing this type of partitioning.

Looking ahead to future releases, the developers have made it clear that the model /usr-merged will end up being the only optionWhen that happens, those still using older systems or who haven't migrated their installations could encounter upgrade blocks or even broken systems when trying to jump from very old branches (e.g., 3.22) once they are no longer supported.

linux-stable replaces linux-edge

Another structural change in Alpine 3.23 is the replacement of the package linux-edge by linux-stableFor years, the linux-lts and linux-edge variants had diverged in terms of kernel configuration and supported architectures, adding complexity to maintenance. With this change, linux-stable adopts the same configuration as linux-ltsbut it follows the stable branch of the kernel instead of the extended support versions.

For systems that already had installed linux-edgeThe APK package manager automatically handles the installation linux-stable as a replacementHowever, the distribution warns that there are configuration differences compared to the old edge and that, if you need any specific kernel option that is no longer present, you should open an issue report to request its inclusion in the linux-lts configuration.

This replacement may also involve manual settings in the boot managerSince the kernel name has changed and it now follows the same packaging recipe as linux-lts, on systems with custom boot configurations (for example, with hand-tuned GRUB, syslinux in embedded environments, or very specific UEFI configurations), it's advisable to check the entries to ensure they point to the new kernel.

Alpine Linux 3.23 introduces changes to firmware, rules, and packaged services

Alpine Linux 3.23 incorporates a significant reorganization in the areas of firmware and system rules. First, the firmware iwlwifi for Intel wireless cards has moved from linux-firmware-other to linux-firmware-intelThis particularly affects those who had chosen the minimalist combination of linux-firmware-none together with linux-firmware-other to minimize the size of the installation.

If that's the case for you and you're relying on Intel Wi-Fi, you'll now need to explicitly install the package. linux-firmware-intel with APK to get the files iwlwifi*.ucode.zstdOtherwise, you may find that the wireless interface stops working after the update, which is especially annoying on remote machines or laptops.

In the firewall section, Alpine introduces a new scheme for nftables rules: The rule sets are packaged into subpackages $pkgname-nftrules, who install their files in /usr/share/nftables.avail/To enable them in the system, simply create symbolic links from those files to /etc/nftables.d/This allows you to select only the rules that interest you. For those who want a quicker option, there is a metapackage called nftables-rulesets which installs all available rule subpackages.

A cleaning and reorganization has also been carried out udev rulesMost of them have moved. from the main packages to specific subpackages with the -udev suffixOn systems that already have udev installed, these subpackages are added automatically, so in theory, no action is required. The purpose of this change is to simplify minimalist installations that do without udev, common in containers or ultralight environments.

Something similar happens with services for systemdAlthough Alpine still uses OpenRC as its default init system and does not include systemd as a standard package, many packages now provide subpackages $pkgname-systemd which contain the units and services necessary to integrate with systemd. This is primarily intended to facilitate work on projects such as postmarket OS or other environments where Alpine is used as a base with systemd on top. The distribution makes it clear that There is no intention to replace OpenRC with systemd as the default init system..

Notable package and ecosystem updates in Alpine Linux 3.23

Alpine Linux 3.23 comes, as usual, with a good dose of Key package updates across the server, development, and desktop ecosystemAmong the most relevant components are the language and runtime. Rust 1.91.x, the database PostgreSQL 18, the interpreter Perl 5.42, the language Ruby 3.4.7, the execution environment .NET 10, the development kit Open JDK 25, the in-memory database engine Valkey 9.0 or the framework Qt 6.10.

In the area of ​​web and network services, Alpine 3.23 includes PHP 8.5.0, Docker 29, OpenSMTPD 7.8.0, ISC BIND 9.20.16, ISC Kea 3.0.2 and Node.js 24.11.1 LTSThis combination makes the distribution a highly up-to-date foundation for modern applications, microservices, APIs, and email or DNS services. It is also updated Go to version 1.25This benefits a multitude of cloud-native projects packaged in Alpine.

In multimedia, the package ffmpeg is updated from version 6 to 8Many ffmpeg users have already recompiled against the new API, although Alpine still retains ffmpeg6 and ffmpeg7 packages for those components whose compatibility has not yet been adjusted. What does disappear is ffmpeg4, which is being permanently removed, after migrating all its consumers to at least ffmpeg 6.

The network toolset curl is now recompiled with HTTP/3 support Thanks to the integration of nghttp3 and openssl-quic, this allows applications that rely on curl to make connections to take advantage of new transport protocols, making it especially interesting for high-performance web services or modern diagnostic tools.

The web server nginx is compiled with the –with-compat optionwhich enables compatibility with external dynamic modules. In addition, a new subpackage is introduced. nginx-mod-dev which includes the source code and build dependencies needed to build nginx modules outside the Alpine tree. However, the distribution emphasizes that It does not support cross-combinationsModules compiled against a different version of nginx or on another distribution will not work correctly on the Alpine package, and vice versa.

The desktop ecosystem also benefits from the updating of components such as BIRD 3.1.4, busybox 1.37.0, Garage 2.1.0, LXQt 2.30, Sway 1.11, wlroots 0.19 and zigbee2mqtt 2.6.3among many others. The full list is extensive, and the team encourages you to review the notes for each project if you depend on them directly.

Major changes to networks and removed packages

In the area of ​​declarative network configuration, Alpine 3.23 incorporates ifstate 2, a new major branch that is not compatible with the old 1.x series configuration files. This means that You cannot reuse the old ifstate 1.x files as is.It is essential to adapt the configuration file to the new scheme and the new expected name, otherwise the system may lose network connectivity on the next boot.

The official ifstate documentation describes in detail how migrate the configuration to the new 2.x formatIt's highly recommended to make the transition carefully, especially on remote servers or systems that rely on complex network configurations. A lapse in concentration here could leave the host inaccessible until you have physical access or an alternative connection.

Regarding removed packages, Alpine 3.23 continues its library cleanup process. Qt5 that are no longer in use through no official package. Following the trend of previous releases, more components have been removed from the Qt5 stack, reducing the maintenance of legacy code and encouraging the use of newer versions of the Qt stack.

Additionally, the package is removed. ffmpeg4, as already mentioned, and some other abandoned components: the package rssh disappears due to the lack of upstream maintenance, the same thing happens with ircserviceswhose development has been stalled for years. It is also withdrawing. postgresql-agebecause the Apache AGE project is far behind in supporting modern versions of PostgreSQL and seems to lack the necessary resources to catch up.

For those who need a solution graph database on PostgreSQLAlpine suggests the use of agensgraphHowever, unlike AGE, agensgraph is not a pluggable extension on standard PostgreSQL, but a complete fork of the database engine, with the implications that this has for maintenance and compatibility.

Supported architectures, download and update process

Alpine Linux 3.23 can be downloaded from the official website in different image variants, adapted to very different uses: Standard, Extended, Netboot, Raspberry Pi, Generic ARM and Mini Root FilesystemThis makes it possible to cover everything from complete server installations to embedded environments with minimal storage or images designed for the network.

Regarding architectures, Alpine maintains its wide range of support: images are available for x86_64 (64-bit), x86 (32-bit), AArch64 (ARM64), ARMv7, ppc64le (PowerPC 64-bit Little Endian), s390x (IBM System z), and LoongArch64This variety makes it especially attractive for heterogeneous infrastructures, laboratories, ARM devices, and mainframe environments.

Users who already have Alpine installed can upgrade to version 3.23 using the default package manager. The recommended procedure is to follow the official guide. Upgrading Alpine to a new major release and, once the repositories have been adapted to the new branch, run the command APK upgrade – available on a console or terminal. This ensures that all compatible versions of the 3.23 branch are included, reducing the risk of leaving "partially updated" packages.

If problems arise during the update, the Alpine team encourages you to open incident reports in the official repositoriesproviding logs and configuration details allows for bug fixes, tool improvements, and better documentation of special cases. The wiki and the official version 3.23 announcement page contain this information. Full list of changes, links to the Git log and bug tracker, as well as specific notes for delicate migrations.

Alpine continues to maintain its identity as lightweight, highly secure and highly configurable distributionBased on musl and BusyBox, Alpine does not impose a default graphical environment and uses OpenRC as its default init system. With version 3.23, the project takes a significant step forward in modernizing its kernel, toolchain, and services, prepares for a future /usr-merged configuration, cleans up obsolete packages, and strengthens its capabilities in containers, servers, and minimalist desktops. Therefore, anyone who chooses Alpine has a very current and refined foundation for almost any type of deployment.

Alpine Linux 3.22
Related article:
Alpine Linux 3.22 arrives with significant desktop updates and technical improvements.