2013-06-21 14:06:35 +05:30
## XBPS
The X Binary Package System (in short XBPS) is a new 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.
2013-06-21 14:15:22 +05:30
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:
2013-10-07 14:41:19 +05:30
* Supports **multiple local and remote repositories** (HTTP/HTTPS/FTP).
2013-10-08 13:58:31 +05:30
* **RSA signed remote repositories** (NEW in 0.27).
2013-06-21 14:15:22 +05:30
* **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 **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.
2013-06-21 14:06:35 +05:30
2013-09-25 14:54:46 +05:30
### 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:
2013-11-14 20:54:25 +05:30
$ git clone -b < version > git://github.com/xtraeme/xbps.git
2013-09-25 14:54:46 +05:30
See `git tag -l` to list all available stable releases.
2013-06-21 14:06:35 +05:30
### Build requirements
2009-12-12 15:50:23 +05:30
To build this you'll need:
2014-01-05 14:41:35 +05:30
- A C99 compiler (clang and gcc tested)
2014-02-23 12:53:14 +05:30
- A system that supports POSIX named semaphores
2013-06-21 14:15:22 +05:30
- [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 )
2013-08-19 19:30:45 +05:30
- [libarchive >= 2.8.0 ](http://www.libarchive.org )
2010-01-23 07:07:19 +05:30
2012-03-12 20:09:53 +05:30
and optionally:
2010-01-23 07:07:19 +05:30
2013-06-21 14:15:22 +05:30
- [graphviz ](http://www.graphviz.org ) and [doxygen ](http://www.doxygen.org ) (--with-api-docs) to build API documentation.
- [atf >= 0.15 ](http://code.google.com/p/kyua ) (--with-tests) to build the Kyua test suite [2].
2009-12-12 15:50:23 +05:30
2013-06-21 14:06:35 +05:30
### 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.
2009-12-12 15:50:23 +05:30
2010-05-20 02:08:27 +05:30
There are some more options that can be tweaked, see them with
`./configure --help'.
2009-12-28 20:49:58 +05:30
2009-12-12 15:50:23 +05:30
Good luck!