2008-12-12 17:12:45 +00:00
|
|
|
|
-----------------------------------------------------------------------------
|
|
|
|
|
WHAT IS IT?
|
|
|
|
|
-----------------------------------------------------------------------------
|
|
|
|
|
|
2008-10-13 05:32:05 +00:00
|
|
|
|
xbps - xtraeme's build package system.
|
2008-09-29 17:25:56 +00:00
|
|
|
|
|
2008-10-30 06:36:18 +00:00
|
|
|
|
It is a simple build package system that installs packages inside of
|
|
|
|
|
a chroot in a destination directory. Once the package has been installed
|
|
|
|
|
into this directory, you can make it appear/unappear at the master directory
|
2008-12-12 17:12:45 +00:00
|
|
|
|
at any time. It's in spirit the same than GNU stow, but the files are just
|
|
|
|
|
copied (there are no soft/hard links).
|
2008-10-30 06:36:18 +00:00
|
|
|
|
|
2008-10-30 06:38:14 +00:00
|
|
|
|
xbps has been designed for Linux, and for the moment I'm not interested to
|
2008-10-30 06:36:18 +00:00
|
|
|
|
make it work on any other random OS. I've been a NetBSD developer for some
|
|
|
|
|
years and I do not want to come back... also the experience has helped to
|
|
|
|
|
me to start xbps and not to use pkgsrc, which is very portable but also
|
|
|
|
|
not so fast.
|
2008-09-29 18:05:13 +00:00
|
|
|
|
|
2008-12-12 17:12:45 +00:00
|
|
|
|
-----------------------------------------------------------------------------
|
|
|
|
|
REQUIREMENTS
|
|
|
|
|
-----------------------------------------------------------------------------
|
|
|
|
|
|
2008-10-20 14:34:27 +00:00
|
|
|
|
xbps uses proplib, a property container object library and it's almost the
|
|
|
|
|
same one available for NetBSD. Be sure to have it installed before using
|
|
|
|
|
xbps. You can get it at:
|
|
|
|
|
|
|
|
|
|
http://code.google.com/p/portableproplib/
|
|
|
|
|
|
2008-12-12 17:12:45 +00:00
|
|
|
|
I'm also the human maintaining the portable proplib package. I'd suggest you
|
|
|
|
|
to install it into /usr/local to avoid issues with your distribution packages.
|
|
|
|
|
|
|
|
|
|
Additionally the following software is required to be able to use xbps:
|
|
|
|
|
|
|
|
|
|
* GNU Binutils
|
|
|
|
|
* GNU Bison
|
2008-12-22 14:30:25 +00:00
|
|
|
|
* GNU GCC C++ (plus GMP and MPFR) development packages.
|
|
|
|
|
* GNU Gettext
|
|
|
|
|
* GNU Make
|
2008-12-12 17:12:45 +00:00
|
|
|
|
* GNU m4
|
|
|
|
|
* fakeroot
|
2008-12-22 14:36:13 +00:00
|
|
|
|
* ncurses (development package).
|
2008-12-22 14:30:25 +00:00
|
|
|
|
* wget
|
2008-12-27 04:25:38 +00:00
|
|
|
|
* libarchive (development package).
|
2008-12-12 17:12:45 +00:00
|
|
|
|
|
|
|
|
|
Super-user privileges are required as well, because all packages are built
|
|
|
|
|
in a chroot (except the ones that are included in a virtual package to be
|
|
|
|
|
able to build a minimal system for the chroot).
|
|
|
|
|
|
|
|
|
|
PLEASE NOTE THAT fakechroot or fakeroot-ng DO NOT WORK.
|
2008-10-30 06:36:18 +00:00
|
|
|
|
|
2008-09-29 18:05:13 +00:00
|
|
|
|
------------------------------------------------------------------------------
|
|
|
|
|
HOW TO USE IT
|
|
|
|
|
------------------------------------------------------------------------------
|
|
|
|
|
|
2008-12-22 01:14:40 +00:00
|
|
|
|
Before using xbps, some required utilities need to be built and installed
|
|
|
|
|
into $(PREFIX); by default they are installed into /usr/local.
|
|
|
|
|
You can do this by issuing "make" and "make install" as root in the top
|
|
|
|
|
level directory.
|
|
|
|
|
|
|
|
|
|
Now you should edit the configuration file located in the etc directory
|
|
|
|
|
in the top level directory. By default it uses the xbps directory in
|
|
|
|
|
your $HOME.
|
2008-10-20 14:34:27 +00:00
|
|
|
|
|
2008-12-12 17:12:45 +00:00
|
|
|
|
If configuration file is not specified from the command line with the
|
2008-10-03 16:53:58 +00:00
|
|
|
|
-c flag, it will first try to use the default location at
|
2008-12-21 23:40:36 +00:00
|
|
|
|
/etc/xbps.conf, and as last resort in the etc directory of the current
|
|
|
|
|
directory.
|
2008-09-29 18:05:13 +00:00
|
|
|
|
|
2008-10-30 06:36:18 +00:00
|
|
|
|
To avoid problems with libtool and configure scripts finding stuff that is
|
2008-12-12 17:12:45 +00:00
|
|
|
|
available in the host system, almost all packages must be built inside of a
|
|
|
|
|
chroot. So the first thing would be to create the binary packages with:
|
|
|
|
|
|
2008-12-22 01:27:51 +00:00
|
|
|
|
$ xbps-src install xbps-base-chroot
|
2008-12-12 17:12:45 +00:00
|
|
|
|
|
2008-12-13 02:01:24 +00:00
|
|
|
|
This will build all required packages via fakeroot in masterdir, therefore you
|
2008-12-12 17:12:45 +00:00
|
|
|
|
can run it as normal user. Next commands will require super-user privileges
|
|
|
|
|
and all package handling will be done within the chroot. I believe it's the
|
|
|
|
|
most easier and faster way to handle clean dependencies; another reason would
|
|
|
|
|
be that xbps packages are meant to be used in a system and not just for
|
2008-12-13 02:01:24 +00:00
|
|
|
|
ordinary users. So once all packages are built, you can create and enter
|
|
|
|
|
to the chroot with:
|
2008-09-29 18:05:13 +00:00
|
|
|
|
|
2008-12-22 01:27:51 +00:00
|
|
|
|
$ sudo xbps-src chroot
|
2008-09-29 23:59:51 +00:00
|
|
|
|
|
2008-12-12 17:12:45 +00:00
|
|
|
|
Press Control + D to exit from the chroot. The following targets will require
|
|
|
|
|
to be done in the chroot:
|
|
|
|
|
|
|
|
|
|
build, configure, install, install-destdir, remove, stow and unstow.
|
|
|
|
|
|
|
|
|
|
Now let's explain some more about the targets that you can use. To start
|
2008-10-30 06:36:18 +00:00
|
|
|
|
installing packages you should use the install target:
|
|
|
|
|
|
2008-12-22 01:27:51 +00:00
|
|
|
|
$ sudo xbps-src install glib
|
2008-09-29 18:05:13 +00:00
|
|
|
|
|
|
|
|
|
If the package is properly installed, it will be "stowned" automatically.
|
|
|
|
|
``stowned<65><64> means that this package is available in the master directory,
|
2008-10-23 15:14:00 +00:00
|
|
|
|
on which xpbs has copied all files from DESTDIR/<pkgname>.
|
2008-09-29 18:05:13 +00:00
|
|
|
|
|
|
|
|
|
To remove a currently installed (and stowned) package, you can use:
|
|
|
|
|
|
2008-12-22 01:27:51 +00:00
|
|
|
|
$ sudo xbps-src remove glib
|
2008-09-29 18:05:13 +00:00
|
|
|
|
|
|
|
|
|
Please note that when you remove it, the package will also be removed
|
2008-10-13 05:32:05 +00:00
|
|
|
|
from XBPS_DESTDIR and previously "unstowned".
|
2008-09-29 18:05:13 +00:00
|
|
|
|
|
2008-12-12 17:12:45 +00:00
|
|
|
|
To stow an already installed package (from XBPS_DESTDIR/<pkgname>):
|
2008-09-29 18:05:13 +00:00
|
|
|
|
|
2008-12-22 01:27:51 +00:00
|
|
|
|
$ sudo xbps-src stow glib
|
2008-09-29 18:05:13 +00:00
|
|
|
|
|
|
|
|
|
and to unstow an already installed (stowned) package:
|
|
|
|
|
|
2008-12-22 01:27:51 +00:00
|
|
|
|
$ sudo xbps-src unstow glib
|
2008-09-29 18:05:13 +00:00
|
|
|
|
|
2008-12-12 17:12:45 +00:00
|
|
|
|
You can also print some stuff about any template build file, e.g:
|
2008-09-29 18:05:13 +00:00
|
|
|
|
|
2008-12-22 01:27:51 +00:00
|
|
|
|
$ xbps-src info glib
|
2008-09-29 18:05:13 +00:00
|
|
|
|
|
2008-09-29 22:45:25 +00:00
|
|
|
|
To list installed (stowned) packages, use this:
|
|
|
|
|
|
2008-12-22 01:27:51 +00:00
|
|
|
|
$ xbps-src list
|
2008-09-29 22:45:25 +00:00
|
|
|
|
|
2008-10-12 18:05:52 +00:00
|
|
|
|
To only extract the distfiles, without configuring/building/installing:
|
2008-10-02 01:52:21 +00:00
|
|
|
|
|
2008-12-22 01:27:51 +00:00
|
|
|
|
$ xbps-src extract foo
|
2008-10-02 01:52:21 +00:00
|
|
|
|
|
|
|
|
|
To not remove the build directory after successful installation:
|
|
|
|
|
|
2008-12-22 01:27:51 +00:00
|
|
|
|
$ sudo xbps-src -C install blah
|
2008-10-02 01:52:21 +00:00
|
|
|
|
|
|
|
|
|
To only fetch the distfile:
|
|
|
|
|
|
2008-12-22 01:27:51 +00:00
|
|
|
|
$ xbps-src fetch blah
|
2008-10-02 01:52:21 +00:00
|
|
|
|
|
|
|
|
|
To only install the package, _without_ stowning it into the master directory:
|
|
|
|
|
|
2008-12-22 01:27:51 +00:00
|
|
|
|
$ sudo xbps-src install-destdir blob
|
2008-10-02 01:52:21 +00:00
|
|
|
|
|
2008-10-13 04:19:35 +00:00
|
|
|
|
To list files installed by a package, note that package must be installed
|
2008-12-09 15:58:58 +00:00
|
|
|
|
into destination directory first:
|
2008-10-13 04:19:35 +00:00
|
|
|
|
|
2008-12-22 01:27:51 +00:00
|
|
|
|
$ xbps-src listfiles blob
|
2008-10-13 04:19:35 +00:00
|
|
|
|
|
2008-09-29 18:05:13 +00:00
|
|
|
|
------------------------------------------------------------------------------
|
2008-09-30 02:02:44 +00:00
|
|
|
|
PERFORMANCE
|
|
|
|
|
------------------------------------------------------------------------------
|
|
|
|
|
|
2008-10-13 05:32:05 +00:00
|
|
|
|
xbps is really fast, trust me. That was one of my reasons to make my own
|
2008-09-30 02:02:44 +00:00
|
|
|
|
pkgsrc/ports alike system.
|
|
|
|
|
|
2008-10-04 13:09:11 +00:00
|
|
|
|
If you want benchmarks, here is one: building libX11 and all its dependencies
|
2008-10-13 05:32:05 +00:00
|
|
|
|
required (not included building xstow) with xbps:
|
2008-09-30 02:02:44 +00:00
|
|
|
|
|
2008-10-04 13:09:11 +00:00
|
|
|
|
251.20s real 121.36s user 53.94s system
|
2008-09-29 18:05:13 +00:00
|
|
|
|
|
2008-10-04 13:09:11 +00:00
|
|
|
|
versus pkgsrc (make install clean clean-depends and digest previously
|
|
|
|
|
installed):
|
2008-09-30 02:02:44 +00:00
|
|
|
|
|
2008-10-04 13:09:11 +00:00
|
|
|
|
450.41s real 167.58s user 97.31s system
|
2008-09-30 02:02:44 +00:00
|
|
|
|
|
2008-10-04 13:09:11 +00:00
|
|
|
|
That's more or less 40% faster! that's the price you pay for having those
|
|
|
|
|
wrappers in pkgsrc that aren't very useful on NetBSD :-)
|
2008-09-30 02:02:44 +00:00
|
|
|
|
|
|
|
|
|
------------------------------------------------------------------------------
|
2008-09-29 18:05:13 +00:00
|
|
|
|
Juan Romero Pardines <xtraeme@gmail.com>
|