Skip to main content
Retis can be installed from a container image, COPR for rpm-compatible distributions, or from sources.

Installation Methods

Fedora Package

Official package for Fedora 43+

Container Image

Run Retis in a container with Podman or Docker

COPR Repository

RPM packages for Fedora, RHEL, and EPEL

From Source

Build Retis from source code

Fedora

Starting with Fedora 43, Retis is available as an official package.
dnf -y install retis
retis --help

Container Image

We provide a script to run Retis in a container for x86_64 and aarch64 targets. The current directory is mounted with read-write permissions to the container working directory, allowing Retis to read and write files (e.g., events, pcap). Both Podman and Docker runtimes are supported (auto-detected by the script).
1

Download the container script

curl -O https://raw.githubusercontent.com/retis-org/retis/main/tools/retis_in_container.sh
chmod +x retis_in_container.sh
2

Run Retis in a container

./retis_in_container.sh --help

Container Options

./retis_in_container.sh --help
By default, the script uses the latest stable version of Retis. Available tags can be seen on quay.io.
The next tag points to the latest daily build of the main branch. Using this tag allows access to the latest features but might not be fully functional.

Environment Variables

The container script supports the following environment variables:
  • RETIS_TAG - Set a specific version tag
  • RETIS_IMAGE - Use an alternate image location (for disconnected environments)
  • PAGER and NOPAGER - Control pager behavior (same as with the Retis binary)
  • OVS_RUNDIR - Specify OVS runtime directory (default: /var/run/openvswitch)

COPR

RPM packages for Fedora (currently supported releases including Rawhide), RHEL (>= 8) and EPEL (>= 8) are available.
dnf -y copr enable @retis/retis
dnf -y install retis
retis --help

From Sources

Retis depends on the following (in addition to Git and Cargo):
  • rust >= 2021
  • clang
  • jq
  • libelf
  • libpcap
  • llvm
  • make
  • pkg-config
If the python feature is used (which is by default), the Python3 shared libraries and headers must be available.

Install Dependencies

dnf -y install git cargo clang elfutils-libelf-devel python3-devel \
    jq libpcap-devel llvm make pkgconf-pkg-config

Build Retis

1

Clone the repository

git clone --depth 1 https://github.com/retis-org/retis
cd retis
2

Build the release binary

make release
./target/release/retis --help
3

Install profiles

Profiles should be installed in either /usr/share/retis/profiles or $HOME/.config/retis/profiles.
mkdir -p /usr/share/retis/profiles
cp retis/profiles/* /usr/share/retis/profiles

Cross-Compilation

Retis can be cross-compiled and is currently supported on x86, x86-64 and aarch64. The target is defined using the CARGO_BUILD_TARGET environment variable.
CARGO_BUILD_TARGET=aarch64-unknown-linux-gnu \
    PYO3_CROSS_LIB_DIR=sysroot/usr/lib/python3.14 \
    make release
file ./target/aarch64-unknown-linux-gnu/release/retis
# [...] ARM aarch64, [...]
When python support is built (enabled by default), PYO3_CROSS_LIB_DIR= needs to be set to the directory containing the target’s libpython dynamic shared object. To disable Python support, use CARGO_CMD_OPTS=--no-default-features.

Running as Non-Root

Retis can run as non-root if it has the right capabilities. Note that doing this alone often means tracefs won’t be available as it’s usually owned by root only and Retis won’t be able to fully filter probes.
sudo setcap cap_sys_admin,cap_bpf,cap_syslog=ep $(which retis)
retis collect

Shell Auto-Completion

Retis can generate completion files for shells (Bash, Zsh, Fish, etc.). For example, to enable auto-completion of Retis commands in Bash:
# Add to .bashrc
source <(retis sh-complete --shell bash)
After adding this line to your .bashrc, command parameters will be auto-completed when pressing Tab.

Build docs developers (and LLMs) love