You're reading an old version of this documentation. If you want up-to-date information, please have a look at stable.

Installation

Tip

Note: check out the Tutorial if you want a first impression of zrepl.

User Privileges

It is possible to run zrepl as an unprivileged user in combination with ZFS delegation. Also, there is the possibility to run it in a jail on FreeBSD by delegating a dataset to the jail. However, until we get around documenting those setups, you will have to run zrepl as root or experiment yourself :)

Packages

zrepl source releases are signed & tagged by the author in the git repository. Your OS vendor may provide binary packages of zrepl through the package manager. Additionally, binary releases are provided on GitHub. The following list may be incomplete, feel free to submit a PR with an update:

OS / Distro

Install Command

Link

FreeBSD

pkg install zrepl

https://www.freshports.org/sysutils/zrepl/

MacOS

brew install zrepl

Available on homebrew

Arch Linux

yay install zrepl

Available on AUR

Fedora

dnf install zrepl

Available on COPR

CentOS/RHEL

yum install zrepl

Available on COPR

Debian + Ubuntu

apt install zrepl

APT repository config see below

OmniOS

pkg install zrepl

Available since r151030

Others

Use binary releases or build from source.

Debian / Ubuntu APT repositories

We maintain APT repositories for Debian, Ubuntu and derivatives. The fingerprint of the signing key is E101 418F D3D6 FBCB 9D65  A62D 7086 99FC 5F2E BF16. It is available at https://zrepl.cschwarz.com/apt/apt-key.asc . Please open an issue in the packaging repository if you encounter any issues with the repository.

The following snippet configure the repository for your Debian or Ubuntu release:

apt update && apt install curl gnupg lsb-release; \
ARCH="$(dpkg --print-architecture)"; \
CODENAME="$(lsb_release -i -s | tr '[:upper:]' '[:lower:]') $(lsb_release -c -s | tr '[:upper:]' '[:lower:]')"; \
echo "Using Distro and Codename: $CODENAME"; \
(curl https://zrepl.cschwarz.com/apt/apt-key.asc | apt-key add -) && \
(echo "deb [arch=$ARCH] https://zrepl.cschwarz.com/apt/$CODENAME main" > /etc/apt/sources.list.d/zrepl.list) && \
apt update

Note

Until zrepl reaches 1.0, all APT repositories will be updated to the latest zrepl release immediately. This includes breaking changes between zrepl versions. Use apt-mark hold zrepl to prevent upgrades of zrepl.

Compile From Source

Producing a release requires Go 1.11 or newer and Python 3 + pip3 + docs/requirements.txt for the Sphinx documentation. A tutorial to install Go is available over at golang.org. Python and pip3 should probably be installed via your distro’s package manager.

Alternatively, you can use the Docker build process: it is used to produce the official zrepl binary releases and serves as a reference for build dependencies and procedure:

git clone https://github.com/zrepl/zrepl.git
cd zrepl
sudo docker build -t zrepl_build -f build.Dockerfile .
sudo docker run -it --rm \
    -v "${PWD}:/src" \
    --user "$(id -u):$(id -g)" \
    zrepl_build make release

Alternatively, you can install build dependencies on your local system and then build in your $GOPATH:

mkdir -p "${GOPATH}/src/github.com/zrepl/zrepl"
git clone https://github.com/zrepl/zrepl.git "${GOPATH}/src/github.com/zrepl/zrepl"
cd "${GOPATH}/src/github.com/zrepl/zrepl"
python3 -m venv3
source venv3/bin/activate
./lazy.sh devsetup
make release

The Python venv is used for the documentation build dependencies. If you just want to build the zrepl binary, leave it out and use ./lazy.sh godep instead. Either way, all build results are located in the artifacts/ directory.

Note

It is your job to install the apropriate binary in the zrepl users’s $PATH, e.g. /usr/local/bin/zrepl. Otherwise, the examples in the Tutorial may need to be adjusted.

What next?

Read the configuration chapter and then continue with the usage chapter.

Reminder: If you want a quick introduction, please read the Tutorial.