123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456 |
- .. include:: global.rst.inc
- .. highlight:: bash
- .. _installation:
- Installation
- ============
- There are different ways to install Borg:
- - :ref:`distribution-package` - easy and fast if a package is
- available from your distribution.
- - :ref:`pyinstaller-binary` - easy and fast, we provide a ready-to-use binary file
- that comes bundled with all dependencies.
- - :ref:`source-install`, either:
- - :ref:`windows-binary` - builds a binary file for Windows using MSYS2.
- - :ref:`pip-installation` - installing a source package with pip needs
- more installation steps and requires all dependencies with
- development headers and a compiler.
- - :ref:`git-installation` - for developers and power users who want to
- have the latest code or use revision control (each release is
- tagged).
- .. _distribution-package:
- Distribution Package
- --------------------
- Some distributions might offer a ready-to-use ``borgbackup``
- package which can be installed with the package manager.
- .. important:: Those packages may not be up to date with the latest
- Borg releases. Before submitting a bug
- report, check the package version and compare that to
- our latest release then review :doc:`changes` to see if
- the bug has been fixed. Report bugs to the package
- maintainer rather than directly to Borg if the
- package is out of date in the distribution.
- .. keep this list in alphabetical order
- ============ ============================================= =======
- Distribution Source Command
- ============ ============================================= =======
- Alpine Linux `Alpine repository`_ ``apk add borgbackup``
- Arch Linux `[extra]`_ ``pacman -S borg``
- Debian `Debian packages`_ ``apt install borgbackup``
- Gentoo `ebuild`_ ``emerge borgbackup``
- GNU Guix `GNU Guix`_ ``guix package --install borg``
- Fedora/RHEL `Fedora official repository`_ ``dnf install borgbackup``
- FreeBSD `FreeBSD ports`_ ``cd /usr/ports/archivers/py-borgbackup && make install clean``
- macOS `Homebrew`_ | ``brew install borgbackup`` (official formula, **no** FUSE support)
- | **or**
- | ``brew install --cask macfuse`` (`private Tap`_, FUSE support)
- | ``brew install borgbackup/tap/borgbackup-fuse``
- Mageia `cauldron`_ ``urpmi borgbackup``
- NetBSD `pkgsrc`_ ``pkg_add py-borgbackup``
- NixOS `.nix file`_ ``nix-env -i borgbackup``
- OpenBSD `OpenBSD ports`_ ``pkg_add borgbackup``
- OpenIndiana `OpenIndiana hipster repository`_ ``pkg install borg``
- openSUSE `openSUSE official repository`_ ``zypper in borgbackup``
- Raspbian `Raspbian testing`_ ``apt install borgbackup``
- Ubuntu `Ubuntu packages`_, `Ubuntu PPA`_ ``apt install borgbackup``
- ============ ============================================= =======
- .. _Alpine repository: https://pkgs.alpinelinux.org/packages?name=borgbackup
- .. _[extra]: https://www.archlinux.org/packages/?name=borg
- .. _Debian packages: https://packages.debian.org/search?keywords=borgbackup&searchon=names&exact=1&suite=all§ion=all
- .. _Fedora official repository: https://packages.fedoraproject.org/pkgs/borgbackup/borgbackup/
- .. _FreeBSD ports: https://www.freshports.org/archivers/py-borgbackup/
- .. _ebuild: https://packages.gentoo.org/packages/app-backup/borgbackup
- .. _GNU Guix: https://www.gnu.org/software/guix/package-list.html#borg
- .. _pkgsrc: http://pkgsrc.se/sysutils/py-borgbackup
- .. _cauldron: http://madb.mageia.org/package/show/application/0/release/cauldron/name/borgbackup
- .. _.nix file: https://github.com/NixOS/nixpkgs/blob/master/pkgs/tools/backup/borgbackup/default.nix
- .. _OpenBSD ports: https://cvsweb.openbsd.org/cgi-bin/cvsweb/ports/sysutils/borgbackup/
- .. _OpenIndiana hipster repository: https://pkg.openindiana.org/hipster/en/search.shtml?token=borg&action=Search
- .. _openSUSE official repository: https://software.opensuse.org/package/borgbackup
- .. _Homebrew: https://formulae.brew.sh/formula/borgbackup
- .. _private Tap: https://github.com/borgbackup/homebrew-tap
- .. _Raspbian testing: https://archive.raspbian.org/raspbian/pool/main/b/borgbackup/
- .. _Ubuntu packages: https://launchpad.net/ubuntu/+source/borgbackup
- .. _Ubuntu PPA: https://launchpad.net/~costamagnagianfranco/+archive/ubuntu/borgbackup
- Please ask package maintainers to build a package or, if you can package /
- submit it yourself, please help us with that! See :issue:`105` on
- github to followup on packaging efforts.
- **Current status of package in the repositories**
- .. start-badges
- |Packaging status|
- .. |Packaging status| image:: https://repology.org/badge/vertical-allrepos/borgbackup.svg
- :alt: Packaging status
- :target: https://repology.org/project/borgbackup/versions
- .. end-badges
- .. _pyinstaller-binary:
- Standalone Binary
- -----------------
- .. note:: Releases are signed with an OpenPGP key, see
- :ref:`security-contact` for more instructions.
- Borg x86/x64 amd/intel compatible binaries (generated with `pyinstaller`_)
- are available on the releases_ page for the following platforms:
- * **Linux**: glibc >= 2.28 (ok for most supported Linux releases).
- Older glibc releases are untested and may not work.
- * **MacOS**: 10.12 or newer (To avoid signing issues download the file via
- command line **or** remove the ``quarantine`` attribute after downloading:
- ``$ xattr -dr com.apple.quarantine borg-macosx64.tgz``)
- * **FreeBSD**: 12.1 (unknown whether it works for older releases)
- ARM binaries are built by Johann Bauer, see: https://borg.bauerj.eu/
- To install such a binary, just drop it into a directory in your ``PATH``,
- make borg readable and executable for its users and then you can run ``borg``::
- sudo cp borg-linux64 /usr/local/bin/borg
- sudo chown root:root /usr/local/bin/borg
- sudo chmod 755 /usr/local/bin/borg
- Optionally you can create a symlink to have ``borgfs`` available, which is an
- alias for ``borg mount``::
- ln -s /usr/local/bin/borg /usr/local/bin/borgfs
- Note that the binary uses /tmp to unpack Borg with all dependencies. It will
- fail if /tmp has not enough free space or is mounted with the ``noexec``
- option. You can change the temporary directory by setting the ``TEMP``
- environment variable before running Borg.
- If a new version is released, you will have to download it manually and replace
- the old version using the same steps as shown above.
- .. _pyinstaller: http://www.pyinstaller.org
- .. _releases: https://github.com/borgbackup/borg/releases
- .. _source-install:
- From Source
- -----------
- .. note::
- Some older Linux systems (like RHEL/CentOS 5) and Python interpreter binaries
- compiled to be able to run on such systems (like Python installed via Anaconda)
- might miss functions required by Borg.
- This issue will be detected early and Borg will abort with a fatal error.
- Dependencies
- ~~~~~~~~~~~~
- To install Borg from a source package (including pip), you have to install the
- 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.10.0
- * OpenSSL_ >= 1.1.1 (LibreSSL will not work)
- * libacl_ (which depends on libattr_)
- * libxxhash_ >= 0.8.1
- * liblz4_ >= 1.7.0 (r129)
- * libzstd_ >= 1.3.0
- * libffi (required for argon2-cffi-bindings)
- * 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:
- - 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.
- After you have installed the dependencies, you can proceed with steps outlined
- under :ref:`pip-installation`.
- Debian / Ubuntu
- +++++++++++++++
- Install the dependencies with development headers::
- sudo apt-get install python3 python3-dev python3-pip python3-virtualenv \
- libacl1-dev \
- libssl-dev \
- liblz4-dev libzstd-dev libxxhash-dev \
- libffi-dev \
- build-essential pkg-config
- sudo apt-get install libfuse-dev fuse # needed for llfuse
- sudo apt-get install libfuse3-dev fuse3 # needed for pyfuse3
- In case you get complaints about permission denied on ``/etc/fuse.conf``: on
- Ubuntu this means your user is not in the ``fuse`` group. Add yourself to that
- group, log out and log in again.
- Fedora
- ++++++
- Install the dependencies with development headers::
- sudo dnf install python3 python3-devel python3-pip python3-virtualenv \
- libacl-devel \
- openssl-devel \
- lz4-devel libzstd-devel xxhash-devel \
- libffi-devel \
- 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
- openSUSE Tumbleweed / Leap
- ++++++++++++++++++++++++++
- Install the dependencies automatically using zypper::
- sudo zypper source-install --build-deps-only borgbackup
- Alternatively, you can enumerate all build dependencies in the command line::
- sudo zypper install python3 python3-devel \
- libacl-devel openssl-devel xxhash-devel libzstd-devel liblz4-devel \
- libffi-devel \
- python3-Cython python3-Sphinx python3-msgpack-python python3-pkgconfig pkgconf \
- python3-pytest python3-setuptools python3-setuptools_scm \
- python3-sphinx_rtd_theme gcc gcc-c++
- sudo zypper install python3-llfuse # llfuse
- macOS
- +++++
- When installing borgbackup via Homebrew_, the basic dependencies are installed automatically.
- For FUSE support to mount the backup archives, you need macFUSE, which is available
- via `github <https://github.com/osxfuse/osxfuse/releases/latest>`__, or Homebrew::
- brew install --cask macfuse
- When installing Borg via ``pip``, be sure to install the ``llfuse`` extra,
- since macFUSE only supports FUSE API v2. Also, since Homebrew won't link
- the installed ``openssl`` formula, point pkg-config to the correct path::
- PKG_CONFIG_PATH="/usr/local/opt/openssl@1.1/lib/pkgconfig" pip install borgbackup[llfuse]
- When working from a borg git repo workdir, you can install dependencies using the
- 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
- 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
- granted full disk access, and you run Borg backup from cron, you will see
- messages such as::
- /Users/you/Pictures/Photos Library.photoslibrary: scandir: [Errno 1] Operation not permitted:
- To fix this problem, you should grant full disk access to cron, and to your
- Terminal application. More information `can be found here
- <https://osxdaily.com/2020/04/27/fix-cron-permissions-macos-full-disk-access/>`__.
- FreeBSD
- ++++++++
- Listed below are packages you will need to install Borg, its dependencies,
- and commands to make FUSE work for using the mount command.
- ::
- pkg install -y python3 pkgconf
- pkg install openssl
- pkg install liblz4 zstd xxhash
- pkg install fusefs-libs # needed for llfuse
- pkg install -y git
- python3 -m ensurepip # to install pip for Python3
- To use the mount command:
- echo 'fuse_load="YES"' >> /boot/loader.conf
- echo 'vfs.usermount=1' >> /etc/sysctl.conf
- kldload fuse
- sysctl vfs.usermount=1
- .. _windows_deps:
- Windows
- +++++++
- .. note::
- Running under Windows is experimental.
- .. warning::
- This script needs to be run in the UCRT64 environment in MSYS2.
- Install the dependencies with the provided script::
- ./scripts/msys2-install-deps
- Windows 10's Linux Subsystem
- ++++++++++++++++++++++++++++
- .. note::
- Running under Windows 10's Linux Subsystem is experimental and has not been tested much yet.
- Just follow the Ubuntu Linux installation steps. You can omit the FUSE stuff, it won't work anyway.
- Cygwin
- ++++++
- .. note::
- Running under Cygwin is experimental and has not been tested much yet.
- Use the Cygwin installer to install the dependencies::
- 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
- Make sure to use a virtual environment to avoid confusions with any Python installed on Windows.
- .. _windows-binary:
- Building a binary on Windows
- ~~~~~~~~~~~~~~~~~~~~~~~~~~~~
- .. note::
- This is experimental.
- .. warning::
- This needs to be run in the UCRT64 environment in MSYS2.
- Ensure to install the dependencies as described within :ref:`Dependencies: Windows <windows_deps>`.
- ::
- # Needed for setuptools < 70.2.0 to work - https://www.msys2.org/docs/python/#known-issues
- # export SETUPTOOLS_USE_DISTUTILS=stdlib
- pip install -e .
- pyinstaller -y scripts/borg.exe.spec
- A standalone executable will be created in ``dist/borg.exe``.
- .. _pip-installation:
- Using pip
- ~~~~~~~~~
- Virtualenv_ can be used to build and install Borg without affecting
- the system Python or requiring root access. Using a virtual environment is
- optional, but recommended except for the most simple use cases.
- Ensure to install the dependencies as described within :ref:`source-install`.
- .. note::
- If you install into a virtual environment, you need to **activate** it
- first (``source borg-env/bin/activate``), before running ``borg``.
- Alternatively, symlink ``borg-env/bin/borg`` into some directory that is in
- your ``PATH`` so you can run ``borg``.
- This will use ``pip`` to install the latest release from PyPi::
- virtualenv --python=python3 borg-env
- source borg-env/bin/activate
- # might be required if your tools are outdated
- pip install -U pip setuptools wheel
- # install Borg + Python dependencies into virtualenv
- pip install borgbackup
- # or alternatively (if you want FUSE support):
- pip install borgbackup[llfuse] # to use llfuse
- pip install borgbackup[pyfuse3] # to use pyfuse3
- To upgrade Borg to a new version later, run the following after
- activating your virtual environment::
- pip install -U borgbackup # or ... borgbackup[llfuse/pyfuse3]
- When doing manual pip installation, man pages are not automatically
- installed. You can run these commands to install the man pages
- locally::
- # get borg from github
- git clone https://github.com/borgbackup/borg.git borg
- # Install the files with proper permissions
- install -D -m 0644 borg/docs/man/borg*.1* $HOME/.local/share/man/man1/borg.1
- # Update the man page cache
- mandb
- .. _git-installation:
- Using git
- ~~~~~~~~~
- This uses latest, unreleased development code from git.
- While we try not to break master, there are no guarantees on anything.
- Ensure to install the dependencies as described within :ref:`source-install`.
- ::
- # get borg from github
- git clone https://github.com/borgbackup/borg.git
- # create a virtual environment
- virtualenv --python=$(which python3) borg-env
- source borg-env/bin/activate # always before using!
- # install borg + dependencies into virtualenv
- cd borg
- pip install -r requirements.d/development.txt
- pip install -r requirements.d/docs.txt # optional, to build the docs
- pip install -e . # in-place editable mode
- or
- pip install -e .[pyfuse3] # in-place editable mode, use pyfuse3
- or
- pip install -e .[llfuse] # in-place editable mode, use llfuse
- # optional: run all the tests, on all installed Python versions
- # requires fakeroot, available through your package manager
- fakeroot -u tox --skip-missing-interpreters
- By default the system installation of python will be used.
- If you need to use a different version of Python you can install this using ``pyenv``:
- ::
- ...
- # create a virtual environment
- pyenv install 3.10.0 # minimum, preferably use something more recent!
- pyenv global 3.10.0
- pyenv local 3.10.0
- virtualenv --python=${pyenv which python} borg-env
- source borg-env/bin/activate # always before using!
- ...
- .. note:: As a developer or power user, you should always use a virtual environment.
|