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

Features

News

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:

    • /usr/share/xbps/preserve.d
    • /etc/xbps/preserve.d

    Full path to a file or globbing can be used: - preserve=/usr/bin/blah - preserve=/etc/blah/*.conf

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

September 02, 2014

MATE desktop 1.8.1 now available

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

This DE supports suspend/hibernation/fast-user-switching with no additional changes, thanks to ConsoleKit and upower (0.9.x).

The minimal MATE desktop is available in the mate meta-package, and all its extra applications (Atril, Pluma, applets, etc) are in the mate-extra package. For additional functionality the ConsoleKit and upower0 packages must also be installed.

To install all MATE packages with full functionality:

# xbps-install -Sv mate mate-extra ConsoleKit upower0
# ln -s /etc/sv/dbus /var/service/

Use mate-session to start it via ~/.xinitrc or select it in your Display Manager.

A screenshot of my MATE desktop:

MATE xtraeme desktop

August 06, 2014

KDE SC 4.13.3 now available

The KDE SC packages have been updated to the latest stable version available: 4.13.3.

The packages have been adapted to be used with runit and ConsoleKit, and support suspend/hibernation, and fast user switching.

To install it and enable KDM:

# xbps-install -Sv kde
# ln -s /etc/sv/dbus /var/service/
# ln -s /etc/sv/kdm /var/service/

A screenshot of my KDE desktop:

KDE SC 4.13.3 xtraeme desktop

August 06, 2014

LibreSSL enabled by default

The LibreSSL implementation is now used by default. This fork of OpenSSL is maintained and pro-actively developed by the OpenBSD team.

We believe that at long-term it will benefit the whole FOSS community, and this will help to not repeat the infamous heartbleed.

If you still have the openssl package installed, it should be replaced by the libressl-openssl package to make a full switch to LibreSSL:

# xbps-install -Sv libressl-openssl

Enjoy!

July 29, 2014

runit enabled by default

The runit init system is now enabled by default, replacing systemd in the base system.

runit is small, portable and perfect for our needs. systemd is still being supported optionally and can be installed via the base-system-systemd package.

After upgrading you'll have to customize system settings in the /etc/rc.conf configuration file; see this wiki page for more information.

All images have been switched to runit. If you are using a Desktop Environment such as GNOME, you might want to put some packages on hold and rebuild packages that need systemd with the systemd package build option enabled:

## This makes base-system-systemd the preferred base-system pkg.

# xbps-install -S
# xbps-install -y base-system-systemd

## Put packages with the `systemd` build option on hold.

# xbps-pkgdb -m hold <pkg> ...
## This enables the systemd build option globally for all supported pkgs.

$ cd xbps-packages
$ echo 'XBPS_PKG_OPTIONS=systemd' >> etc/conf
$ ./xbps-src show-sys-updates
...

Enjoy!

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

After booting, the user anon will be autologged in. This user has full access to execute any command through the sudo utility. 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 a source package

Search for source packages, matching a keyword by looking at the void-packages github repository. You can verify if the repository includes a specific package.

Latest package commits

See latest package builds.

Buy some goodies!

Do you want to support Void Linux? Get the goodies and become prettier.

tshirts mug

bshirt1 bshirt2 bshirt3