Go to file
Juan RP 023484ca0b Introduce xbps_{array,pkgdb}_foreach_cb_multi() and use it where appropiate.
In some tasks the single threaded implementation outperms the multithreaded
one. Use it where it really makes a difference. The _multi() routines do not
spawn any thread if _SC_NPROCESSORS_ONLN == 1.

Bump XBPS_API_VERSION.
2013-09-17 16:30:13 +02:00
bin Introduce xbps_{array,pkgdb}_foreach_cb_multi() and use it where appropiate. 2013-09-17 16:30:13 +02:00
data data/libxbps.pc.in: no need to link to proplib anymore. 2013-06-20 12:33:23 +02:00
doc
etc Remove PackagesOnHold from xbps.conf; use xbps-pkgdb -m hold|unhold instead. 2013-08-12 14:46:54 +02:00
include Introduce xbps_{array,pkgdb}_foreach_cb_multi() and use it where appropiate. 2013-09-17 16:30:13 +02:00
lib Introduce xbps_{array,pkgdb}_foreach_cb_multi() and use it where appropiate. 2013-09-17 16:30:13 +02:00
mk mk/prog.mk: set MAN to $(BIN).8 by default. 2013-09-16 08:57:24 +02:00
tests xbps_api.h -> xbps.h 2013-06-20 12:31:02 +02:00
.gitignore .gitignore: ignore generated xbps.h 2013-06-27 17:17:47 +02:00
3RDPARTY Merge portable proplib 0.6.3. 2013-03-09 16:41:40 +01:00
configure configure: embed short hash for the git revision. 2013-09-15 10:34:25 +02:00
COPYING
Makefile Makefile: error out if ./configure wasn't executed before the 'all' target. 2013-02-01 14:59:32 +01:00
NEWS Re-add all pkg metadata objects to the repository index. 2013-09-16 09:09:56 +02:00
README.md README: relax libarchive version requirement. 2013-08-19 16:00:45 +02:00
TODO New pkgdb (0.21) and repo index (1.7) format, see NEWS for info. 2013-03-05 04:08:42 +01:00

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.

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 (FTP/HTTP/HTTPS).
  • 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.

The latest stable version 0.25 was released on July 5th, 2013.

Build requirements

To build this you'll need:

and optionally:

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!