[![Build Status](https://travis-ci.org/voidlinux/xbps.svg?branch=master)](https://travis-ci.org/voidlinux/xbps) ## XBPS The X Binary Package System (in short XBPS) is a binary package system **designed and implemented from scratch**. Its goal is to be fast, easy to use, bug-free, featureful and portable as much as possible. The XBPS code is totally **compatible with POSIX/SUSv2/C99 standards**, and released with a **Simplified BSD license (2 clause)**. There is a well documented API provided by the XBPS Library that is the basis for its frontends to handle binary packages and repositories. Some highlights: * Supports **multiple local and remote repositories** (HTTP/HTTPS/FTP). * **RSA signed remote repositories** (NEW in 0.27). * **SHA256 hashes** for package metadata, files and binary packages. * Supports **package states** (ala dpkg) to mitigate broken package installs/updates. * Ability to **resume** partial package install/updates. * Ability to **unpack only files that have been modified** in package updates. * Ability to use **virtual packages**. * Ability to **check for incompatible shared libraries in reverse dependencies**. * Ability to **replace packages**. * Ability to **put packages on hold** (to never update them. NEW in 0.16). * Ability to **preserve/update configuration files**. * Ability to **force reinstallation** of any installed package. * Ability to **downgrade any** installed package. * Ability to **execute pre/post install/remove/update scriptlets**. * Ability to **check package integrity**: missing files, hashes, missing or unresolved (reverse)dependencies, dangling or modified symlinks, etc. * **Low memory** footprint. * **Fast** dependency resolver and sorting algorithms. ### Getting source code Starting with **0.26** there are not source tarballs anymore. **git** must be used to clone the repository with the appropiate tag. The latest stable version can be fetched with: $ git clone -b git://github.com/xtraeme/xbps.git See `git tag -l` to list all available stable releases. ### Build requirements To build this you'll need: - A C99 compiler (clang and gcc tested) - [GNU make](http://www.gnu.org/software/make/) - [pkg-config](http://www.freedesktop.org/wiki/Software/pkg-config/) - [zlib](http://www.zlib.net) - [openssl](http://www.openssl.org) - [libarchive >= 2.8.0](http://www.libarchive.org) and optionally: - [graphviz](http://www.graphviz.org) and [doxygen](http://www.doxygen.org) (--enable-api-docs) to build API documentation. - [atf >= 0.15](http://code.google.com/p/kyua) (--enable-tests) to build the Kyua test suite. ### Tests To run the test suite make sure *kyua* is installed and run the following: ``` ./configure --enable-tests --enable-debug make make DESTDIR=~/XBPS install clean LD_PRELOAD=~/XBPS/usr/local/lib/libxbps.so.2 PATH=~/XBPS/usr/local/sbin:$PATH kyua test -k ~/XBPS/usr/local/tests/xbps/Kyuafile ``` ### Build instructions Standard configure script (not generated by GNU autoconf). ``` ./configure --prefix=/blah make -jX make install ``` By default PREFIX is set `/usr/local` and may be changed by setting `--prefix` in the `configure` script. The `DESTDIR` variable is also supported at the install stage. There are some more options that can be tweaked, see them with `./configure --help`. Good luck!