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:
libtinfo5Terminfo database, used for colour/cursor detection. On distributions that have moved to
libtinfo6(Ubuntu 24.04+), thelibtinfo5compatibility package is available from the universe repository.opensslRuntime 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.
Optional but strongly recommended¶
gcc(any modern version)Necessary for toolchain auto-detection. Without a system compiler, the analyser probes through
--compiler-path. Then you register each cross toolchain yourself.clangThe same role as gcc. The analyser uses either compiler. Both compilers together give more exact diagnostics for the Clang extensions.
graphviz(thedotprogram)Necessary for
--dep-graph-out-png. Without graphviz, the analyser writes the.dotsource and omits the PNG step.goRequired to detect Go targets. The Go detector runs
go tool dist listto enumerate the supported triples.
Tested distributions¶
Distribution |
|
|---|---|
Ubuntu 22.04 LTS |
|
Ubuntu 24.04 LTS |
|
Debian 12 |
|
Fedora 39 / 40 |
|
RHEL 9 / AlmaLinux 9 |
|
Alpine 3.20 |
|
(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
gccif you only ever pass--compiler-pathfor an explicit cross toolchain.Skip
graphvizif 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 thelibtinfo5dependency.
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.