Installing TPA from source v23

This document explains how to use TPA from a copy of the source code repository.

Please install TPA from packages if you can; install from source only if no packages are available for your system (e.g., on MacOS X), or if you are collaborating with the TPA developers to test unreleased code.

To run TPA from source, you must install all of the dependencies (e.g., Python 3.6+) that the packages would handle for you, or download the source and run TPA in a Docker container. (Either way will work fine on Linux and MacOS X.)

Quickstart

First, you must install the various dependencies that would have been installed automatically along with the TPA packages. (You can use something other than sudo to run these commands as root, if you prefer.)

# Debian (python3.7) or Ubuntu (python3.6)
$ sudo apt-get install python3.7 python3-pip python3-venv \
      git openvpn patch

# RedHat, Rocky or AlmaLinux (python3 for RHEL7, python36 for RHEL8)
$ sudo yum install python36 python3-pip \
      epel-release git openvpn patch

# MacOS X
$ brew tap discoteq/discoteq
$ brew install python@3 openvpn flock coreutils gpatch git

Next, install TPA itself:

$ git clone ssh://git@github.com/EnterpriseDB/tpaexec.git
$ ./tpaexec/bin/tpaexec setup
$ ./tpaexec/bin/tpaexec selftest

Step-by-step

Install the various dependencies as described above.

If your system does not have Python 3.6+ packages, you can use pyenv to install a more recent Python in your home directory (see below), or you can run TPA in a Docker container.

Next, clone the TPA repository into, say, ~/tpaexec. (It doesn't matter where you put it, but don't use /opt/EDB/TPA or /opt/2ndQuadrant/TPA, to avoid conflicts if you install the TPA packages in future.)

$ git clone ssh://git@github.com/EnterpriseDB/tpaexec.git ~/tpaexec

(If you're installing from source, please clone the repository instead of downloading an archive of the source.)

The remaining steps are the same as if you had installed the package.

# Add tpaexec to your PATH for convenience
# (Put this in your ~/.bashrc too)
$ export PATH=$PATH:$HOME/tpaexec/bin

$ tpaexec setup
$ tpaexec selftest

If the self-test completes without any errors, your TPA installation is ready for use.

Python 3.6+

TPA requires Python 3.6 or later, available on most modern distributions. If you don't have it, you can use pyenv to install any version of Python you like without affecting the system packages.

# First, install pyenv and activate it in ~/.bashrc
# See https://github.com/pyenv/pyenv#installation
# (e.g., `brew install pyenv` on MacOS X)

$ pyenv install 3.9.0
Downloading Python-3.9.0.tar.xz...
-> https://www.python.org/ftp/python/3.9.0/Python-3.9.0.tar.xz
Installing Python-3.9.0...
Installed Python-3.9.0 to /home/ams/.pyenv/versions/3.9.0

$ pyenv local 3.9.0
$ pyenv version
3.9.0 (set by /home/ams/pyenv/.python-version)

$ pyenv which python3
/home/ams/.pyenv/versions/3.9.0/bin/python3
$ python3 --version
3.9.0

If you were not already using pyenv, please remember to add pyenv to your PATH in .bashrc and call eval "$(pyenv init -)" as described in the pyenv documentation.

Virtual environment options

By default, tpaexec setup will use the builtin Python 3 -m venv to create a venv under $TPA_DIR/tpa-venv, and activate it automatically whenever tpaexec is invoked.

You can run tpaexec setup --venv /other/location to specify a different location for the new venv.

We strongly suggest sticking to the default venv location. If you use a different location, you must also set the environment variable TPA_VENV to its location, for example by adding the following line to your .bashrc (or other shell startup scripts):

export TPA_VENV="/other/location"