You may need to install pip first. This can be accomplished through your distribution's package manager, e.g.:
aptitude install python-pip
or the manual instructions.

Using pip

It's as simple as:

pip install bundlewrap

Note that you need at least Python 2.7 to run BundleWrap. Python 3 is supported as long as it's >= 3.3.

From git

This type of install will give you the very latest (and thus possibly broken) bleeding edge version of BundleWrap. You should only use this if you know what you're doing.
The instructions below are for installing on Ubuntu Server 12.10 (Quantal), but should also work for other versions of Ubuntu/Debian. If you're on some other distro, you will obviously have to adjust the package install commands.
The instructions assume you have root privileges.

Install basic requirements:

aptitude install build-essential git python-dev python-pip

Clone the GitHub repository:

cd /opt
git clone

Use pip install -e to install in "development mode":

pip install -e /opt/bundlewrap

You can now try running the bw command line utility:

bw --help

That's it.

To update your install, just pull the git repository and have` check for new dependencies:

cd /opt/bundlewrap
git pull
python develop

Requirements for managed systems

While the following list might appear long, even very minimal systems should provide everything that's needed.

  • apt-get (only used with pkg_apt items)
  • cat
  • chmod
  • chown
  • dconf (only used with dconf items)
  • dpkg (only used with pkg_apt items)
  • echo
  • file
  • find
  • grep
  • groupadd
  • groupmod
  • id
  • initctl (only used with svc_upstart items)
  • mkdir
  • mv
  • pacman (only used with pkg_pacman items)
  • pamac (only used with pkg_pamac items)
  • rm
  • sftp-enabled SSH server (your home directory must be writable)
  • sudo
  • sha1sum
  • stat
  • systemctl (only used with svc_systemd items)
  • tar (only used with git_deploy items)
  • useradd
  • usermod
  • zfs and zpool (only used with zfs_dataset and zfs_pool items)

Additionally, you need to pre-configure your SSH client so that it can connect to your nodes without having to type a password (including sudo on the node, which also must not have the requiretty option set).