A distro based on the xbps packaging system

The Void Linux distribution

Void is a general purpose linux distribution, meant to be used by advanced users. 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.

The spirit of Void is such that we keep things default, necessary, and minimal as possible (while trying not to leave features out).

Currently there are over 4000 optimized packages for the x86, x86_64, ARMv6 hard float (Raspberry Pi), and ARMv7 architectures; also there's support to build (natively or cross compiling) from sources any package easily that is available in the XBPS source packages collection.



November 03, 2014

LXQt 0.8.0 Desktop Environment now available

The LXQt desktop environment has been packaged by yours truly and we've now got the latest available version: 0.8.0.

To install a complete LXQt package with full functionality:

# xbps-install -S lxqt

Use startlxqt to start it via ~/.xinitrc or select it in your Display Manager.

A screenshot of my LXQt desktop:

LXQt xtraeme desktop

October 19, 2014

GRUB not part of base-system anymore

On the x86 platforms, grub is not part of the base-system package anymore. That means that after upgrading base-system to 0.94, grub will be detected as an orphan. If you are using grub, please change it to manual installation mode to keep it:

# xbps-pkgdb -m manual grub

for x86, or:

# xbps-pkgdb -m manual grub-x86_64-efi

for x86_64.

This is in preparation to support other bootloaders in the future.

September 29, 2014

XBPS 0.41 is out

A new XBPS stable version has been released: 0.41. This is a bugfix release that contains a new feature reverts.

Release notes:

  • libxbps: another bugfix while checking required shlibs in reverse dependencies. Written another test case to verify its correctness.

  • libxbps: rather than checking if user has write permission on package files for removal, check if the files are owned by the same user ID. This fixes a new issue where files with only the read bit set cannot be removed. Added a new test case to verify its correctness.

  • xbps-create(8): xz compressed packages now use default compression level (-6) rather than max level (-9); max compression level uses too much memory and it's much slower; by Christian Neukirchen.

  • Improvements for xbps bash completions, by Eivind Uggedal.

  • A performance improvement for xbps_file_hash(), by Enno Boland.

  • Added reverts field to package definitions. If defined, a package will replace all versions specified in this field even if the installed version is newer. This is helpful when a broken package is released. The maintainer can downgrade this package and define a reverts field to the broken version. On the next update xbps-install will automatically replace the broken release by the new downgraded release.

  • Replace xbps-packages directory by void-packages in xbps-checkvers(8), xbps-uchroot(8) and others, by Enno Boland.

Please report issues at https://github.com/voidlinux/xbps/issues.

September 18, 2014

XBPS 0.40 is out

A new XBPS stable version has been released: 0.40. This is a bugfix release.

Release notes:

  • xbps-install(8): handle xbps_transaction_prepare() returning ENOSPC, to abort a transaction when there's insufficient disk space on rootdir.

  • xbps-query(8): -S/--show mode no longer prints ANSI escape codes if stdout is not a tty; suggested by @chneukirchen.

  • Reduced considerably memory requirement when checking SHA256 hashes on files. Previous way of allocating heap memory as big as the file being processed wasn't a great idea.

  • xbps-{install,remove}: the post-install/pre-remove messages are now printed with some guards, without the need to add them manually to the {INSTALL,REMOVE}.msg files in the source packages:

  • Fixed a heap overflow when printing post-install/pre-remove messages. Noticed by Gottox.

  • Updated zsh completion with more properties for xbps-query(8). Contributed by Christian Neukirchen.

  • Updated bash completion with more properties for xbps-query(8). Contributed by Eivind Uggedal in #58.

Please report issues at https://github.com/voidlinux/xbps/issues.

September 15, 2014

XBPS 0.39 is out

A new XBPS stable version has been released: 0.39. This is a major release that supports local search, preserve files, post-install/pre-remove messages, reverse checking of shared libraries (among other things).

Release notes:

  • Updated bash/zsh completions for >= 0.38 with new features (Contributed by Eivind Uggedal and Christian Neukirchen respectively).

  • xbps-rindex: fix -a/--add mode to create repodata archives with 0664 permissions; and do not create a new archive if the file cannot be open/locked, error out instead... otherwise the file lock is ignored.

  • A minor build fix for the musl C library.

  • Disabled best pkg matching code for performance reasons. When installing or updating a package without any version component, the first repo containing it wins. Previously the repository with the greatest version won. Use a specific package expression to match packages in multiple repos, or switch the order of the repos instead.

  • Added bash completion for xbps-*. Contributed by Eivind Uggedal.

  • Added zsh completion for xbps-* and xbps-src. Contributed by Christian Neukirchen.

  • xbps-query(8): added -s/--search local mode; local pkg queries are now possible.

  • pkgdb-0.38 format: the pkgdb plist file now contains all pkg metadata objects plus the pkgdb specific ones (automatic-install, install-date, metafile-sha256) with the pkg files list being the exception. The pkgdb code will automatically convert the pkgdb files to the new format the first time it's accesed.

    This effectively implements a two phase upgrade, the first time to upgrade the pkgdb format and the second one to execute the real operation.

    The pkg metadata files stored in metadir (/var/db/xbps) now just contains its pkg files list objects, everything else is stored in pkgdb. This allows libxbps to speed up the process of checking for unmet shared libraries, among other things.

  • libxbps: added support to check pkg shlib-{provides,requires} objects for all pkgs in the transaction to be updated. This will make impossible to update a package to a newer version that contains incompatible shlibs used in its revdeps.

  • xbps-rindex(8): -r/--remove-obsoletes is now ~5x faster.

  • xbps-remove(8): -O/--clean-cache is now ~10% faster.

  • libxbps: xbps_repo_{open,close}() gained an additional argument to acquire/release a POSIX file lock (see lockf(3)) to serialize write access to the repository archive. This obsoletes the POSIX named semaphores that were used in xbps-rindex(8), which only allowed to add/clean a repository per architecture, even if it wasn't the same local repository!

  • libxbps: the fetch code now is able to connect to HTTPS without the need of /etc/services being available; We don't expect those ports to change anytime!

  • xbps-uchroot(8) is now only built on linux, because it's not portable to other Operating Systems.

  • Added support to replace virtual packages when the package to be installed matches a virtual pkgname, for example:

    • nvidia is installed and provides the libGL virtual pkgname.
    • libGL matches the virtual pkgname and therefore replaces the nvidia pkg.
  • xbps-query(8): added --fulldeptree long option to print a full dependency tree for a package; this supersedes -xx which was broken since 0.37.

  • xbps-query(8): fix a segfault with -Rf when there's no network connectivity. Reported by Gottox.

  • xbps-uchroot(8): do not remount / unnecessarily; just mount it as private and nosuid once; this is enough for our use cases.

  • xbps-query(8): --show/-S mode now explicitly prints pkg metadata keys with the bold ANSI escape code.

  • xbps-query(8): --search --property now works with <integer> objects, i.e:

    $ xbps-query -s '' -p filename-size

  • xbps-remove(8): -O/--clean-cache no longer triggers an assertion when the cache directory is empty.

  • Implemented support to preserve existent on-disk files, by always ignoring the pkg content if the file has been matched. Details here.

    The new "preserve" keyword can be used in the xbps configuration file, as well as for the system and configuration directories:


Full path to a file or globbing can be used:

  • Always preserve files that exist on disk, but are managed by a package. When such condition ocurrs install the pkg configuration file as file.new-<version>. This fixes GH issue #50.

  • Implemented support for post-install and pre-remove messages, as explained in issue #44.

    xbps-create(8) will read the {INSTALL,REMOVE}.msg files and will add its contents into the {install,remove}-msg data objects on its metadata plist file.

  • xbps-install(8): added support to list packages that will be downloaded, if those were available in a remote repository and were not in the cache directory.

  • Before accepting a transaction, xbps now checks if there's enough free space on the target rootdir (on disk) to proceed with the operation. In code terms, xbps_transaction_prepare() now returns ENOSPC if the size of the transaction exceeds the size of the free space. Close issue #7.

  • When installing or updating packages, now proper statistics are generated when a binary package from a remote repository exists in the cachedir, and when a package has the "preserve" property.

  • libxbps: return ENXIO and a meaningful error message if a package that is going to be installed or updated has invalid dependencies, i.e:

$ xbps-install --repository=$HOME/repo -n foo
ERROR: foo-1.0_1: can't guess pkgname for dependency '>=invalid-spec_1'
Package `foo' contains invalid dependencies, exiting.

This fixes #43 (xbps-install: unhelpful message for invalid dependency) submitted by Dominik Honnef.

  • libxbps: fixed a new issue with packages that provide/replace the same virtual package that is going to be replaced. The issue could be reproduced easily by installing any awk package (gawk, mawk, or nawk), which are providing/replacing the "awk" virtual package.

  • libfetch: synchronized with NetBSD pkgsrc/libfetch.

  • libfetch: add support for TLS SNI (Server Name Identification) from NetBSD, with some minor debug changes. This fixes GH issue #41.

Please report issues at https://github.com/voidlinux/xbps/issues.

Read the previous news

Download installable live images

Currently there are installable live images for the x86 and x86_64 architectures and there is support to make a local installation (with the included packages) or a network installation (packages are downloaded from official repository).

Log in as anon/root, password voidlinux.

To start the installer just execute the void-installer utility with enough permissions (i.e sudo).

Download ready to boot images for ARM

The current list of supported ARM platforms is:

You can install Void by using a prepared image or a rootfs tarball that can be written / unpacked onto the SD card. This method allows you to have a system ready to boot / use, once it's written / unpacked onto the target device.

Log in as root, password voidlinux.

Source repositories

Find binary packages

Search for available binary packages in the official repository index matching simple keywords.

Latest package commits

See latest package builds.


Help Void!

Do you want to support Void Linux? Donations can be made via Flattr or Paypal.

Flattr this
Paypal icon
Additionally there are some goodies as well!

tshirts tshirts mug

bshirt1 bshirt2 bshirt3