Skip to content

Commit

Permalink
docs: update install docs, nothing bundled anymore! fixes #8342.
Browse files Browse the repository at this point in the history
borg 1.2.x used to bundle some source code for lz4, zstd and xxhash,
but borg 1.4.x got rid of that - all that is meanwhile available as
a library in all OSes we support.

also, the python package pkgconfig does not need to be "preinstalled"
anymore, because our pyproject.toml cares for that. otoh, the cli tool
pkg-config must be preinstalled so that libs and headers can be found
automagically.

Also be a bit more clear about the FUSE stuff.
  • Loading branch information
ThomasWaldmann committed Dec 24, 2024
1 parent d94b954 commit 095b43b
Show file tree
Hide file tree
Showing 2 changed files with 26 additions and 35 deletions.
1 change: 1 addition & 0 deletions docs/global.rst.inc
Original file line number Diff line number Diff line change
Expand Up @@ -13,6 +13,7 @@
.. _ACL: https://en.wikipedia.org/wiki/Access_control_list
.. _libacl: https://savannah.nongnu.org/projects/acl/
.. _libattr: https://savannah.nongnu.org/projects/attr/
.. _libxxhash: https://github.com/Cyan4973/xxHash
.. _liblz4: https://github.com/Cyan4973/lz4
.. _libzstd: https://github.com/facebook/zstd
.. _OpenSSL: https://www.openssl.org/
Expand Down
60 changes: 25 additions & 35 deletions docs/installation.rst
Original file line number Diff line number Diff line change
Expand Up @@ -155,40 +155,34 @@ Dependencies
~~~~~~~~~~~~

To install Borg from a source package (including pip), you have to install the
following dependencies first:

* `Python 3`_ >= 3.9.0, plus development headers.
* OpenSSL_ >= 1.0.0, plus development headers.
* libacl_ (which depends on libattr_), both plus development headers.
* We have bundled code of the following packages, but borg by default (see
setup.py if you want to change that) prefers a shared library if it can
be found on the system (lib + dev headers) at build time:

- liblz4_ >= 1.7.0 (r129)
- libzstd_ >= 1.3.0
- libxxhash >= 0.8.1 (0.8.0 might work also)
* pkg-config (cli tool) and pkgconfig python package (borg uses these to
discover header and library location - if it can't import pkgconfig and
is not pointed to header/library locations via env vars [see setup.py],
it will fall back to using the bundled code, see above).
**These must be present before invoking setup.py!**
* some other Python dependencies, pip will automatically install them for you.
* optionally, if you wish to mount an archive as a FUSE filesystem, you need
following dependencies first. For the libraries you will also need their
development header files (sometimes in a separate `-dev` or `-devel` package).

* `Python 3`_ >= 3.9.0
* OpenSSL_ >= 1.0.0
* libacl_ (which depends on libattr_)
* libxxhash_ >= 0.8.1
* liblz4_ >= 1.7.0 (r129)
* libzstd_ >= 1.3.0
* pkg-config (cli tool) - Borg uses this to discover header and library
locations automatically. Alternatively, you can also point to them via some
environment variables, see setup.py.
* Some other Python dependencies, pip will automatically install them for you.
* Optionally, if you wish to mount an archive as a FUSE filesystem, you need
a FUSE implementation for Python:

- Either pyfuse3_ (preferably, newer and maintained) or llfuse_ (older,
unmaintained now). See also the BORG_FUSE_IMPL env variable.
- See pyproject.toml about the version requirements.
- pyfuse3_ >= 3.1.1 (for fuse 3, use `pip install borgbackup[pyfuse3]`), or
- llfuse_ >= 1.3.8 (for fuse 2, use `pip install borgbackup[llfuse]`).
- Additionally, your OS will need to have FUSE support installed
(e.g. a package `fuse` for fuse 2 or a package `fuse3` for fuse 3 support).

If you have troubles finding the right package names, have a look at the
distribution specific sections below or the Vagrantfile in the git repository,
which contains installation scripts for a number of operating systems.

In the following, the steps needed to install the dependencies are listed for a
selection of platforms. If your distribution is not covered by these
instructions, try to use your package manager to install the dependencies. On
FreeBSD, you may need to get a recent enough OpenSSL version from FreeBSD
ports.
instructions, try to use your package manager to install the dependencies.

After you have installed the dependencies, you can proceed with steps outlined
under :ref:`pip-installation`.
Expand All @@ -199,11 +193,10 @@ Debian / Ubuntu
Install the dependencies with development headers::

sudo apt-get install python3 python3-dev python3-pip python3-virtualenv \
libacl1-dev libacl1 \
libacl1-dev \
libssl-dev \
liblz4-dev libzstd-dev libxxhash-dev \
build-essential \
pkg-config python3-pkgconfig
build-essential pkg-config
sudo apt-get install libfuse-dev fuse # needed for llfuse
sudo apt-get install libfuse3-dev fuse3 # needed for pyfuse3

Expand All @@ -217,10 +210,10 @@ Fedora
Install the dependencies with development headers::

sudo dnf install python3 python3-devel python3-pip python3-virtualenv \
libacl-devel libacl \
libacl-devel \
openssl-devel \
lz4-devel libzstd-devel xxhash-devel \
pkgconf python3-pkgconfig
pkgconf
sudo dnf install gcc gcc-c++ redhat-rpm-config
sudo dnf install fuse-devel fuse # needed for llfuse
sudo dnf install fuse3-devel fuse3 # needed for pyfuse3
Expand Down Expand Up @@ -263,7 +256,7 @@ Brewfile::

brew install python@3.11 # can be any supported python3 version
brew bundle install # install requirements from borg repo's ./Brewfile
pip3 install virtualenv pkgconfig
pip3 install virtualenv

Be aware that for all recent macOS releases you must authorize full disk access.
It is no longer sufficient to run borg backups as root. If you have not yet
Expand Down Expand Up @@ -314,7 +307,7 @@ Cygwin

Use the Cygwin installer to install the dependencies::

python39 python39-devel python39-pkgconfig
python39 python39-devel
python39-setuptools python39-pip python39-wheel python39-virtualenv
libssl-devel libxxhash-devel liblz4-devel libzstd-devel
binutils gcc-g++ git make openssh
Expand Down Expand Up @@ -345,9 +338,6 @@ This will use ``pip`` to install the latest release from PyPi::
# might be required if your tools are outdated
pip install -U pip setuptools wheel

# pkgconfig MUST be available before borg is installed!
pip install pkgconfig

# install Borg + Python dependencies into virtualenv
pip install borgbackup
# or alternatively (if you want FUSE support):
Expand Down

0 comments on commit 095b43b

Please sign in to comment.