void logo void logo

The Void (Linux) distribution

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 the Intel x86®, ARM® and MIPS® processor architectures; Software packages can be built natively or cross compiling through the XBPS source packages collection.

Not a fork!

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.

Rolling release

Install once, update daily. Your system will always be up-to-date.

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. See the usage page for a brief introduction.


We were the first distribution to switch to LibreSSL by default, replacing OpenSSL.

Due to the Heartbleed fiasco, we believe that the OpenBSD project has qualified and pro-active developers to provide a more secure alternative.


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). See the usage page for a brief introduction.


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).

void-packages changes

xbps changes

February 20, 2020

OpenSSH 8.2 update requires restart of sshd

With the OpenSSH update to 8.2 you must restart the sshd service, or it will not accept new ssh connections.

XBPS will print a notice about this when updating OpenSSH, but we hope by posting this notice we will reach the users who don’t read the output of regular updates and avoid or minimize complications due to the update.

We considered restarting sshd automatically on update, but the policy of not restarting, enabling or otherwise interact with services during updates stands.

January 30, 2020

News about XBPS

XBPS 0.58 was just released, with many new features and a lot of improvements. Since the last post was for 0.54, this post includes all changes and some highlights since the last post.


Performance improvements

Some users might have noticed that removing the plasma-desktop was very time consuming because of dependency cycles. The dependency resolution algorithm has been completely rewritten and is now able to resolve the dependencies of plasma-desktop within seconds.

See the pull request void-linux/xbps#78 if you are interested in what changed.

The --fulldeptree flag of xbps-query(1) in combination with -x or -X for dependencies and reverse dependencies respectively has been improved and will now be 50x faster in the worst case scenario.

ignorepkg configuration option

Many users tried to get rid of the default kernel or some other base-system requirement. For this we’ve added a new configuration keyword: ignorepkg.

With this new keyword you can ignore packages that are pulled in by other packages as runtime dependencies.

As example you can add linux-firmware-amd as ignored package and then uninstall the package:

# echo "ignorepkg=linux-firmware-amd" > /etc/xbps.d/10-ignore.conf
# xbps-remove linux-firmware-amd

This works for any package, i.e. being able to remove linux4.19 while keeping the linux meta package. Or removing the linux meta package itself and installing only the kernel series you like to use yourself.

noextract configuration option

Another useful new feature is the new noextract, it allows to specify patterns of files that should not be extracted when installing or updating packages.

This allows as example to skip extracting translations the users are not interesting in, allowing to reduce the installation size.

We plan to make use of it in xbps-src to cut down the time required to install build dependencies.

Download only flag

A new flag was added to xbps-install(1) which allows to download packages and its dependencies without installing them.


xbps-0.58 (2020-01-30):

  • libfetch: fix CVE-2020-7450; from FreeBSD. [duncaen]

  • xbps-query(1), xbps-remove(1): improved detection of orphans, needing multiple iterations to collect all of them in a single transaction. [xtraeme]

  • xbps-checkvers(1): added -e, --removed. To list removed templates in srcpkgs. [Chocimier]

  • xbps-install(1): improved -D, --download-only. This now can be used to download all required binary packages of the target pkg without the need to have write permission to the rootdir.

    $ xbps-install -c $PWD/cachedir -Dy xbps

    NOTE: -c, --cachedir must be specified as absolute pathname, otherwise it will treat it as relative to rootdir. [xtraeme]

  • xbps-fetch(1): added -s to print sha256sums of downloaded files. [duncaen]

  • configure: re-add --enable-debug and enable it by default. [xtraeme]

  • xbps-install(1): ignore indirect reverse dependencies while updating xbps. [xtraeme]

  • xbps-install(1): added --reproducible long option. If set, enables reproducible mode in pkgdb. [xtraeme]

  • xbps-install(1): don’t prompt if all packages in the transaction are on hold. [Mohamad Barbar]

  • xbps-rindex(1): stop adding the “build-date” pkg obj. Contained wrong info and did not provide enough value to be useful; another step towards reproducibility. [xtraeme]

  • xbps-create(1): always sanitize gathered symlinks. [xtraeme]

  • xbps-install(1): do not silently update xbps on any install/update transaction. If there’s a new update for the xbps package, this needs to be explicitely declared as a single transaction, i.e:

     $ xbps-install -u xbps

    Otherwise it will return EBUSY (16), making this a proper error code to diagnose what failed. [xtraeme]

  • xbps.d(5): new ‘noextract’ configuration option, to skip extracting files matching a pattern. [duncaen]

  • xbps.d(5): autodetected ‘architecture’ (glibc or musl) at compile-time on linux systems. [xtraeme]

  • configure: added --enable-lto and don’t enable it by default. [xtraeme]

  • Multiple bugs with packages on hold were fixed. [xtraeme]

  • xbps-uchroot(1), xbps-uunshare(1): document end of options argument. [Doan Tran Cong Danh]

  • xbps-alternatives(1): prune obsolete alternatives groups. [q66]

17 new test cases were added in this release, 6 people were involved: Juan RP, Piotr Wójcik, Duncan Overbruck, Doan Tran Cong Danh, Mohamad Barbar, q66.

xbps-0.57.1 (2019-10-27):

xbps-0.57 (2019-08-06):

  • xbps now builds with tcc and pcc. [xtraeme]

  • xbps now uses the transactional file checks for package removals, this fixes issues where xbps removes wrong files, if a package replaces another packages with the same files. [duncaen]

  • xbps-remove(1): skip the transaction if no packages are found. This restores the behaviour of xbps prior to 0.54. [xtraeme]

  • xbps-remove(1): fix -o, --remove-orphans not removing all orphaned packages. [duncaen]

  • xbps-install(1): if specified packages with -u, --update are up to date return EEXIST. [jnbr]

  • xbps-query(1): restores old behaviour of --fulldeptree, to not list the package itself. [duncaen]

  • Updated zsh completions. [leah2]

xbps-0.56 (2019-06-24):

  • Fixed xbps_transaction_prepare() always returning ENXIO because the transaction dictionary wasn’t initialized before first use. Regression from 0.54. [xtraeme]

  • Fixed unlocking the pkgdb via xbps_end(). [xtraeme]

  • Fixed flushing pkgdb to storage and re-reading it unnecessarily, this affected xbps-alternatives(1), xbps-pkgdb(1) and xbps-reconfigure(1). [xtraeme]

  • xbps now allows to remove an installed package that was added to the ignored packages list with ignorepkg from xbps.d(5). [duncaen]

  • Fixed an issue with multi threaded for each loops processing the first slicecount*maxthreads entries twice. [duncaen]

  • Fixed an issue with happy eyeballs, where when a socket fails within the connection delay it aborts with the error instead of continuing with the next address. [jnbr]

xbps-0.55 (2019-06-21):

  • xbps-install(1): Added -D, --download-only flag to allow downloading packages to the cache without attempting to install them. [Vaelatern]

  • xbps-install(1): added -I, --ignore-file-conflicts to not abort the transaction even if file conflicts were detected. [xtraeme]

  • xbps-install(1): return 0 if package is already installed, or up-to-date if updating, not EEXIST. EEXIST now is only returned if there are file conflicts in transaction. [xtraeme]

  • xbps-checkvers(1): fixed a segfault with --format. [duncaen]

  • Fixed a build failure on ppc64. [q66]

  • Fixed a build failure on x86. [duncaen]

  • Fixed cross compilation with --enable-static. [xtraeme]