We’re pleased to announce that the 20250202 image set has been promoted to current and is now generally available.
You can find the new images on our downloads page and on our many mirrors.
This release introduces support for several arm64 UEFI devices:
Live ISOs for aarch64
and aarch64-musl
should also support other arm64
devices that support UEFI and can run a mainline (standard) kernel.
Additionally, this image release includes:
xfce
-flavored live ISOsxgenfstab
, a new script from xtools
to simplify generation of /etc/fstab
for chroot installsand the following changes:
nomodeset
(void-packages #52545)nomodeset
(void-mklive 380f0fd
)380f0fd
)growpart
. See
the handbook
for more details
(void-mklive #379)void-installer
now includes a post-installation menu to enable services on the installed system
(void-mklive #389)rpi-aarch64
and rpi-aarch64-musl
PLATFORMFSes and platform images should now
support the recently-released Raspberry Pi 500 and CM5.You may verify the authenticity of the images by following the instructions in the handbook, and using the following minisign key information:
untrusted comment: minisign public key 4D56E70F102AF9F9
RWT5+SoQD+dWTeOdNuc4Q/jq2+3+jpql7+JJp4WukkxTdpsZlk2EGuPj
At long last, Void is saying goodbye to Python 2. Python ended support for
Python 2 in 2020, but Void still had over 200 packages that depended on it.
Since then, Void contributors have
updated, patched, or removed
these packages. For the moment, Python 2 will remain in the repositories as
python2
(along with python2-setuptools
and python2-pip
). python
is
now a metapackage that will soon point to python3
.
One of the biggest blockers for this project was some of Void’s own infrastructure: our buildbot, which builds all packages for delivery to users. For a long time, we were stuck on buildbot 0.8.12 (released on 21 April 2015 and using Python 2), because it was complex to get working, had many moving parts, and was fairly fragile. To update it to a modern version would require significant time and effort.
Now, we move into the future: we’ve upgraded our buildbot to version 4.0, and it is now being managed via our orchestration system, Nomad, to improve reliability, observability, and reproducibility in deployment. Check out the 2023 Infrastructure Week series of blog posts for more info about how and why Void uses Nomad.
Visit the new buildbot dashboard at build.voidlinux.org and watch your packages build!
The Void project is pleased to welcome aboard another new member, @tranzystorekk
.
Interested in seeing your name in a future update here? Read our Contributing Page and find a place to help out! New members are invited from the community of contributors.
We’re pleased to announce that the 20240314 image set has been promoted to current and is now generally available.
You can find the new images on our downloads page and on our many mirrors.
Some highlights of this release:
abbd636
)/boot
partition of 256MiB instead of 64MiB
(@classabbyamp in
#368)rpi-aarch64*
PLATFORMFSes and images now support the Raspberry Pi 5.
After installation, the kernel can be
switched
to the Raspberry Pi 5-specific rpi5-kernel
.
You may verify the authenticity of the images by following the instructions on the downloads page, and using the following minisign key information:
untrusted comment: minisign public key A3FCFCCA9D356F86
RWSGbzWdyvz8o4nrhY1nbmHLF6QiFH/AQXs1mS/0X+t1x3WwUA16hdc/
In an effort to simplify the usage of xbps-src
,
there has been a small change to how masterdirs (the containers xbps-src uses
to build packages) are created and used.
The default masterdir is now called masterdir-<arch>
, except when masterdir
already exists or when using xbps-src in a container (where it’s still masterdir
).
When creating a masterdir for an alternate architecture or libc, the previous syntax was:
./xbps-src -m <name> binary-bootstrap <arch>
Now, the <arch>
should be specified using the new -A
(host architecture)
flag:
./xbps-src -A <arch> binary-bootstrap
This will create a new masterdir called masterdir-<arch>
in the root of your
void-packages repository checkout.
Arbitrarily-named masterdirs can still be created with -m <name>
.
Instead of specifying the alternative masterdir directly, you can now use the
-A
(host architecture) flag to use the masterdir-<arch>
masterdir:
./xbps-src -A <arch> pkg <pkgname>
Arbitrarily-named masterdirs can still be used with -m <name>
.
The Void project is pleased to welcome aboard 2 new members.
Joining us to work on packages are @oreo639
and @cinerea0
.
Interested in seeing your name in a future update here? Read our Contributing Page and find a place to help out! New members are invited from the community of contributors.
With the update to glibc 2.38, libcrypt.so.1
is no longer provided by
glibc.
Libcrypt is an important library for several core system packages that use
cryptographic functions, including pam
. The library has changed versions, and
the legacy version is still available for precompiled or proprietary
applications. The new version is available on Void as libxcrypt
and the legacy
version is libxcrypt-compat
.
With this change, some kinds of partial upgrades can leave PAM unable to
function. This breaks tools like sudo
, doas
, and su
, as well as breaking
authentication to your system. Symptoms include messages like “PAM
authentication error: Module is unknown”. If this has happened to you, you can
either:
init=/bin/sh
to your kernel command-line in the bootloader and
downgrade
glibc,libxcrypt-compat
Either of these steps should allow you to access your system as normal and run a full update.
To ensure the disastrous partial upgrade (described above) cannot happen,
glibc-2.38_3
now depends on libxcrypt-compat
. With this change, it is safe
to perform partial upgrades that include glibc 2.38.
Void is a complex system, and over time we make changes to reduce this
complexity, or shift it to easier to manage components. Recently
through the fantastic work of one of our maintainers classabbyamp
our repository sync system has been dramatically improved.
Previously our system was based on a series of host managed rsyncs running on either snooze or cron based timers. These syncs would push files to a central location to be signed and then distributed. This central location is sometimes referred to as the “shadow repo” since its not directly available to end users to synchronize from, and we don’t usually allow anyone outside Void to have access to it.
As you might have noticed from the Fastly Overview the packages take a long path from builders to repos. What is not obvious from the graph shown is that the shadow repo previously lived on the musl builder, meaning that packages would get built there, copied to the glibc builder, then copied back to the musl builder and finally copied to a mirror. So many copies! To streamline this process, the shadow mirror is now just the glibc server, since that’s where the packages have to wind up for architectural reasons anyway. This means we were able to cut out 2 rsyncs and reclaim a large amount of space on the musl builder, making the entire process less fragile and more streamlined.
But just removing rsyncs isn’t all that was done. To improve the time it takes for packages to make it to users, we’ve also switched the builders from using a time based sync to using lsyncd to take more active management of the synchronization process. In addition to moving to a more sustainable sync process, the entire process was moved up into our Nomad managed environment. Nomad allows us to more easily update services, monitor them for long term trends, and to make it clearer where services are deployed.
In addition to fork-lifting the sync processes, we also forklifted void-updates, xlocate, xq-api (package search), and the generation of the docs-site into Nomad. These changes represent some of the very last services that were not part of our modernized container orchestrated infrastructure.
Visually, this is what the difference looks like. Here’s before:
And here’s what the sync looks like now, note that there aren’t any cycles for syncs now:
If you run a downstream mirror we need your help! If your mirror
has existed for long enough, its possible that you were still
synchronizing from alpha.de.repo.voidlinux.org, which has been a dead
servername for several years now. Since moving around sync traffic is
key to our ability to keep the lights on, we’ve provisioned a new
dedicated DNS record for mirrors to talk to. The new
repo-sync.voidlinux.org
is the preferred origin point for all sync
traffic and using it means that we can transparently move the sync
origin during maintenance rather than causing an rsync hang on your
sync job. Please check where you’re mirroring from and update
accordingly.
Happy Pythonmas! It’s October, which means it’s Python 3 update season. This year, along with the usual large set of updates for Python packages, a safety feature for pip, the Python package manager, has been activated. To ensure that Python packages installed via XBPS and those installed via pip don’t interfere with one another, the system-wide Python environment has been marked as “externally managed”.
If you try to use pip3
or pip3 --user
outside of a Python virtual environment,
you may see this error that provides guidance on how to deploy a virtual
environment suitable for use with pip:
This system-wide Python installation is managed by the Void Linux package
manager, XBPS. Installation of Python packages from other sources is not
normally allowed.
To install a Python package not offered by Void Linux, consider using a virtual
environment, e.g.:
python3 -m venv /path/to/venv
/path/to/venv/pip install <package>
Appending the flag --system-site-packages to the first command will give the
virtual environment access to any Python package installed via XBPS.
Invoking python, pip, and executables installed by pip in /path/to/venv/bin
should automatically use the virtual environment. Alternatively, source its
activation script to add the environment to the command search path for a shell:
. /path/to/venv/activate
After activation, running
deactivate
will remove the environment from the search path without destroying it.
The XBPS package python3-pipx provides pipx, a convenient tool to automatically
manage virtual environments for individual Python applications.
You can read more about this change on Python’s website in PEP 668.
To simplify the use of Void-based containers, all Void container images
tagged 20231003R1
or later will explicitly ignore the “externally managed”
marker. Containers based on these images will still be able to use pip to
install Python packages in the container-wide environment.
If you really want to be able to install packages with pip in the system- or user-wide Python environment, there are several options, but beware: this can cause hard-to-debug issues with Python applications, or issues when updating with XBPS.
--break-system-packages
flag. This only applies to the current invocation.pip3 config set install.break-system-packages True
.
This will apply to all future invocations.noextract=/usr/lib/python*/EXTERNALLY-MANAGED
rule to your
XBPS configuration and re-install the
python3
package. This will apply to all future invocations.To simplify the container experience, we’ve revamped the way Void’s OCI container images are built and tagged.
In short:
mini
flavor is no longer built, as they did not work as intendedYou can check out the available images on the Download page or on Github.
If you’re interested in the technical details, you can take a look at the pull request for these changes.
Old Image | New Image | Notes |
---|---|---|
voidlinux/voidlinux |
ghcr.io/void-linux/void-glibc |
Wow, you’ve been using two-year-old images! |
voidlinux/voidlinux-musl |
ghcr.io/void-linux/void-musl |
|
ghcr.io/void-linux/void-linux:*-full-* |
ghcr.io/void-linux/void-glibc-full |
|
ghcr.io/void-linux/void-linux:*-full-*-musl |
ghcr.io/void-linux/void-musl-full |
|
ghcr.io/void-linux/void-linux:*-thin-* |
ghcr.io/void-linux/void-glibc |
|
ghcr.io/void-linux/void-linux:*-thin-*-musl |
ghcr.io/void-linux/void-musl |
|
ghcr.io/void-linux/void-linux:*-mini-* |
ghcr.io/void-linux/void-glibc |
mini images are no longer built |
ghcr.io/void-linux/void-linux:*-mini-*-musl |
ghcr.io/void-linux/void-musl |
|
ghcr.io/void-linux/void-linux:*-thin-bb-* |
ghcr.io/void-linux/void-glibc-busybox |
|
ghcr.io/void-linux/void-linux:*-thin-bb-*-musl |
ghcr.io/void-linux/void-musl-busybox |
|
ghcr.io/void-linux/void-linux:*-mini-bb-* |
ghcr.io/void-linux/void-glibc-busybox |
mini images are no longer built |
ghcr.io/void-linux/void-linux:*-mini-bb-*-musl |
ghcr.io/void-linux/void-musl-busybox |