Linux system requirements

The Linux binary is statically linked against most of its C++ runtime stack, so the dependency surface visible to the user is small. On a vanilla server install you typically need to add a handful of packages to make the analyser fully functional.

Required at runtime

These are linked dynamically and must be present:

libtinfo5

Terminfo database, used for colour/cursor detection. On distributions that have moved to libtinfo6 (Ubuntu 24.04+), the libtinfo5 compatibility package is available from the universe repository.

openssl

Runtime libcrypto/libssl for the bundled cmark / fetch helpers. Both 1.1.x and 3.x work.

libstdc++

Comes with system gcc; available on every distribution out of the box.

Tested distributions

Distribution

x86_64

Ubuntu 22.04 LTS

+ (T)

Ubuntu 24.04 LTS

+

Debian 12

+

Fedora 39 / 40

+

RHEL 9 / AlmaLinux 9

+

Alpine 3.20

+ (musl, see below)

(T) marks the distribution used in the Jenkins build/test matrix.

Installation hints

Debian / Ubuntu:

sudo apt-get update
sudo apt-get install -y libtinfo5 openssl gcc graphviz

(libtinfo5 lives in the universe component on Ubuntu. Run sudo add-apt-repository universe first to enable that component.)

Fedora / RHEL family:

sudo dnf install -y ncurses-compat-libs openssl gcc graphviz

Alpine (musl libc):

apk add ncurses-libs openssl gcc graphviz

The musl build of the Linux tarball ships with no glibc dependency. Static linking covers the C++ side; libtinfo5 is only required if you do not pass --no-color.

Headless / minimal containers

For CI containers and minimal scratch images:

  • Skip gcc if you only ever pass --compiler-path for an explicit cross toolchain.

  • Skip graphviz if you never use the dependency-graph output.

  • Set VISAO_DISABLE_COLORS=y (or pass --no-color). Log capture in CI reads plain text, and this setting also removes the libtinfo5 dependency.

A minimal Alpine container that runs visao --no-color --language c <file> typically needs only musl, libstdc++, ncurses-libs (for terminfo lookup at startup) and openssl-libs. The bundled dockerfile/ubuntu/Dockerfile in the release tarball is the canonical reference; see Run through Docker.

Permissions

The analyser only reads. No setuid / setcap / capability changes are needed. The toolchain probe cache lives under the user’s config dir. A system service needs write access to ~/.config/visao/. You can also set $XDG_CONFIG_HOME to a service-owned path.