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]