Void is a general purpose operating system, based on the monolithic Linux kernel. Its package system allows you to quickly install, update and remove software; software is provided in binary packages or can be built directly from sources with the help of the XBPS source packages collection.
It is available for a variety of platforms. Software packages can be built natively or cross compiled through the XBPS source packages collection.
Follow us on Mastodon, visit the #voidlinux IRC channel on libera.chat, and join the Void Linux subreddit.
Visit the Void build server console for package build status updates.
Contribute to the Void Linux project by adding and updating packages and extending the documentation. More information can be found in the Handbook.
Void Linux is an independent distribution, developed entirely by volunteers.
Unlike trillions of other existing distros, Void is not a modification of an existing distribution. Void's package manager and build system have been written from scratch.
Void focuses on stability, rather than on being bleeding-edge. Install once, update routinely and safely.
Thanks to our continuous build system, new software is built into binary packages as soon as the changes are pushed to the void-packages repository.
We use runit as the init system and service supervisor.
runit is a simple and effective approach to initialize the system with reliable service supervision. Refer to the Void Handbook for an introduction.
Void Linux supports both the musl and GNU libc implementations, patching incompatible software when necessary and working with upstream developers to improve the correctness and portability of their projects.
xbps is the native system package manager, written from scratch with a 2-clause BSD license.
XBPS allows you to quickly install/update/remove software in your system and features detection of incompatible shared libraries and dependencies while updating or removing packages (among others). Refer to the Handbook for an overview.
xbps-src is the xbps package builder, written from scratch with a 2-clause BSD license.
This builds the software in containers through the use of Linux namespaces, providing isolation of processes and bind mounts (among others). No root required!
Additionally, xbps-src can build natively or cross compile for the target machine, and supports multiple C libraries (glibc and musl currently).
To reduce installation size, firmware provided by linux-firmware is now
compressed with zstd. Ensure you are running a supported kernel when updating to
linux-firmware-20260309_1 or later:
linux5.10>=5.10.251_1linux5.15>=5.15.201_1linux6.1>=6.1.127_1linux6.6>=6.6.68_1linux6.12>=6.12.7_1linux6.18, linux6.19, or any later versionrpi-kernel>=6.12.67_1pinephone-kernel>=6.1.7_2If you cannot run one of these kernels, you can hold the linux-firmware packages
at their currently-installed version:
# xbps-pkgdb -m hold linux-firmware linux-firmware-amd linux-firmware-broadcom \
linux-firmware-intel linux-firmware-network linux-firmware-nvidia linux-firmware-qualcomm
libxbps: fix issues with updating packages in unpacked state. duncaen
libxbps: run all scripts before and after unpacking all packages,
to avoid running things in a half unpacked state. duncaen
libxbps: fix configuration parsing with missing trailing newline
and remove trailing spaces from values. eater, duncaen
libxbps: fix XBPS_ARCH environment variable if architecture
is also defined in a configuration file. duncaen
libxbps: fix memory leaks. ArsenArsen
libxbps: fix file descriptor leaks. gt7-void
libxbps: fix temporary redirect in libfetch. ericonr
libxbps: fix how the automatic/manual mode is set when replacing a
package using replaces. This makes it possible to correctly replace
manually installed packages using a transitional packages. duncaen
libxbps: fix inconsistent dependency resolution when a dependency
is on hold. xbps will now exit with ENODEV (19) if a held dependency
breaks the installation or update of a package instead of just ignoring
it, resulting in an inconsistent pkgdb. #393 duncaen
libxbps: fix issues with XBPS_FLAG_INSTALL_AUTO where already installed
packages would get marked automatically installed when they are being
updated while installing new packages in automatically installed mode.
#557 duncaen
libxbps: when reinstalling a package, don’t remove directories that are still
part of the new package. This avoids the recreation of directories which
trips up runsv, as it keeps an fd to the service directory open that would
be deleted and recreated. #561 duncaen
xbps-install(1): list reinstalled packages. chocimier
xbps-install(1): in dry-run mode, ignore out of space error. chocimier
xbps-install(1): fix bug where a repo-locked dependency could be updated
from a repository it was not locked to. chocimier
xbps-fetch(1): make sure to exit with failure if a failure was encountered.
duncaen
xbps-fetch(1): fix printing uninitialized memory in error cases. duncaen
xbps-pkgdb(1): remove mtime checks, they are unreliable on fat filesystems
and xbps does not rely on mtime matching the package anymore. duncaen
xbps-checkvers(1): with --installed also list subpackages. chocimier
xbps-remove(1): fix dry-run cache cleaning inconsistencies. duncaen
xbps-remove(1): allow removing “uninstalled” packages (packages in the cache
that are still up to date but no long installed) from the package
cache by specifying the -O/--clean-cache flag twice. #530 duncaen
xbps-query(1): --cat now works in either repo or pkgdb mode. duncaen
xbps-query(1): --list-repos/-L list all repos including ones that
fail to open. chocimier
xbps.d(5): describe ignorepkg more precisely. chocimier
libxbps, xbps-install(1), xbps-remove(1), xbps-reconfigure(1),
xbps-alternatives(1): add XBPS_SYSLOG environment variable to overwrite
syslog configuration option. duncaen
libxbps: Resolve performance issue caused by the growing number of virtual packages
in the Void Linux repository. #625 duncaen
libxbps: Merge the staging data into the repository index (repodata) file.
This allows downloading the staging index from remote repositories without
having to keep the two index files in sync. #575 duncaen
xbps-install(1), xbps-query(1), xbps-checkvers(1), xbps.d(5): Added --staging flag,
XBPS_STAGING environment variable and staging=true|false configuration option.
Enabling staging allows xbps to use staged packages from remote repositories.
duncaen
xbps-install(1), xbps-remove(1): Print package install and removal messages once,
below the transaction summary, before applying the transaction. #572 chocimier
xbps-query(1): Improved argument parsing allows package arguments anywhere in the
arguments. #588 classabbyamp
xbps-install(1): Make dry-run output consistent/machine parsable. #611 classabbyamp
libxbps: Do not url-escape tilde character in path for better compatibility with
some servers. #607 gmbeard
libxbps: use the proper ASN1 signature type for packages. Signatures now have a .sig2
extension. #565 classabbyamp
xbps-uhelper(1): add verbose output for pkgmatch and cmpver subcommands if the
-v/--verbose flag is specified. #549 classabbyamp
xbps-uhelper(1): support multiple arguments for many subcommands to improve pipelined
performance. #536 classabbyamp
xbps-alternatives(1): Add -R/--repository mode to -l/--list to show alternatives
of packages in the repository. #340 duncaen
libxbps: fix permanent (308) redirects when fetching packages and repositories. duncaen
xbps-remove(1): ignores file not found errors for files it deletes. duncaen
libxbps: the preserve package metadata is now also respected for package removals. duncaen
xbps-pkgdb(1): new --checks allows to choose which checks are run. #352 ericonr, duncaen
Full Changelog: https://github.com/void-linux/xbps/compare/0.59.2...0.60