From 095b43ba3e782d295ed49ad9fb232ed286670aef Mon Sep 17 00:00:00 2001 From: Thomas Waldmann Date: Tue, 24 Dec 2024 17:30:19 +0100 Subject: [PATCH] docs: update install docs, nothing bundled anymore! fixes #8342. 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. --- docs/global.rst.inc | 1 + docs/installation.rst | 60 ++++++++++++++++++------------------------- 2 files changed, 26 insertions(+), 35 deletions(-) diff --git a/docs/global.rst.inc b/docs/global.rst.inc index b0a1f05d12..44de48c750 100644 --- a/docs/global.rst.inc +++ b/docs/global.rst.inc @@ -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/ diff --git a/docs/installation.rst b/docs/installation.rst index 11b88a0584..381a05a66c 100644 --- a/docs/installation.rst +++ b/docs/installation.rst @@ -155,30 +155,26 @@ 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, @@ -186,9 +182,7 @@ 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`. @@ -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 @@ -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 @@ -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 @@ -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 @@ -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):