How much does Pi-Hole depend on the Linux version it's used with these days?

Just noticed this in : Pi-hole FTL v6.8, Web v6.6.1 and Core v6.5 released:

And I was wondering :

  • What does that mean for Debian 11 users ?
  • How much does Pi-Hole depend on the Linux version you install it on since the release of Pi-Hole v6 since soo much stuff is now integrated into it like CivetWeb and DNSmasq for example ?

Or perhaps better put :
How outdated does the distro need to be and which parts of it for Pi-Hole v6.x.x not to work anymore ?

Debian 11 is EOL and couldn’t install any packages in CI anymore, it was almost always failing.
Pi-hole should generally still work on Debian 11 if you have functioning apt repositories to install the meta-package.

"Pinhole", "Pohole" and now a new one :wink:

Gotta love typing on Discourse using my phone :upside_down_face:

What does that mean exactly ?
What is the CI distro matrix ?

And on which components does Pi-Hole mainly depend these days in order for the installation to succeed ?

It's the list of operating systems used to test Pi-hole.

The Debian 11 images used by GitHub actions can't install the basic packages needed to test Pi-hole anymore, so we can't test Pi-hole on this distro anymore.

If you are interested, this is the output of one of the many failed tests in Debian 11: Only exit the installer when the meta package is not correclty installed · pi-hole/pi-hole@cf7ad22 · GitHub. Noticed that all other tested operating systems were able to install the packages, but Debian 11 couldn't find some packages in apt repositories.

If by components you mean software, I believe below APT packages for a minimal install (plus the kernel oc):

$ apt list --installed ~prequired
Listing... Done
base-files/oldstable,now 12.4+rpi1+deb12u12 armhf [installed]
base-passwd/oldstable,now 3.6.1 armhf [installed]
bash/oldstable,now 5.2.15-2 armhf [installed]
bsdutils/oldstable,now 1:2.38.1-5+deb12u3 armhf [installed]
coreutils/oldstable,now 9.1-1 armhf [installed]
dash/oldstable,now 0.5.12-2 armhf [installed]
debconf/oldstable,now 1.5.82 all [installed]
debianutils/oldstable,now 5.7-0.5~deb12u1 armhf [installed]
diffutils/oldstable,now 1:3.8-4 armhf [installed]
dpkg/oldstable,now 1.22.6~bpo12+rpt3 armhf [installed]
e2fsprogs/oldstable,now 1.47.0-2 armhf [installed]
findutils/oldstable,now 4.9.0-4 armhf [installed]
gcc-10-base/oldstable,now 10.4.0-7+rpi1 armhf [installed]
gcc-7-base/oldstable,now 7.5.0-6+rpi1+b2 armhf [installed]
gcc-8-base/oldstable,now 8.4.0-7+rpi1 armhf [installed]
gcc-9-base/oldstable,now 9.4.0-2+rpi1 armhf [installed]
grep/oldstable,now 3.8-5 armhf [installed]
gzip/oldstable,now 1.12-1 armhf [installed]
hostname/oldstable,now 3.23+nmu1 armhf [installed]
init-system-helpers/oldstable,now 1.65.2+deb12u1 all [installed]
libc-bin/oldstable,now 2.36-9+rpt2+deb12u13 armhf [installed]
liblocale-gettext-perl/oldstable,now 1.07-5 armhf [installed]
libpam-modules-bin/oldstable,now 1.5.2-6+rpt2+deb12u1 armhf [installed]
libpam-modules/oldstable,now 1.5.2-6+rpt2+deb12u1 armhf [installed]
libpam-runtime/oldstable,oldstable,now 1.5.2-6+rpt2+deb12u1 all [installed]
libtext-charwidth-perl/oldstable,now 0.04-11 armhf [installed]
libtext-iconv-perl/oldstable,now 1.7-8 armhf [installed]
login/oldstable,now 1:4.13+dfsg1-1+deb12u2 armhf [installed]
mawk/oldstable,now 1.3.4.20200120-3.1 armhf [installed]
mount/oldstable,now 2.38.1-5+deb12u3 armhf [installed]
ncurses-base/oldstable,now 6.4-4 all [installed]
ncurses-bin/oldstable,now 6.4-4 armhf [installed]
passwd/oldstable,now 1:4.13+dfsg1-1+deb12u2 armhf [installed]
perl-base/oldstable,now 5.36.0-7+deb12u3 armhf [installed]
sed/oldstable,now 4.9-1 armhf [installed]
sysvinit-utils/oldstable,now 3.06-4 armhf [installed]
tar/oldstable,now 1.34+dfsg-1.2 armhf [installed]
tzdata/oldstable,now 2025b-0+deb12u2 all [installed]
util-linux/oldstable,now 2.38.1-5+deb12u3 armhf [installed]
zlib1g/oldstable,now 1:1.2.13.dfsg-1+rpt1 armhf [installed]

Plus Pi-hole's direct dependencies:

$ curl -sSL install.pi-hole.net
[..]
Summary: Pi-hole dependency meta package
Requires: bash-completion,bind-utils,binutils,ca-certificates,chkconfig,cronie,curl,dialog,diffutils,findutils,gawk,git,grep,iproute,jq,libcap,logrotate,lshw,procps-ng,psmisc,sudo,unzip

Maybe I'm forgetting something?

Let me talk about FTL here:

Our pre-built binaries for supported architectures ( ARMv6, ARMv7, ARMv8, i386, x86_64 and riscv64) are statically linked to avoid almost all runtime library dependencies.

For those binaries the minimum Linux kernel version required is 3.17 (released in 2014!) for getrandom(2).

When trying to build FTL from source it gets more complicated.
Required is:

  • CMake 3.21 or later
  • a C17 capable compiler (at least GCC 8.1.0 or LLVM clang 7.0.0)
  • a lock-free implementation of C11 Atomic bool (dependent on CPU architecture and compiler)
  • libc (at least either glibc 2.14+ or musl 1.1.13+)
  • libraries commonly included with libc: libmath, pthreads, librt
  • external libraries: nettle 2.0+, hogweed, gmp, idn2, libunistring
  • at a minimum Linux kernel version 2.6.28
  • CLI tools: uname, xxd, setcap, sha256sum, cut, echo, mv

I restricted the from-source section to hard requirements only, many other features fall back gracefully:

  • TLS support requires mbedTLS 3.5.0+ (or openSSL 3.0+ in v7)
  • v7's HTTP2 and HTTP3 support requires nghttp2 and nghttp3 + openSSL 4.0+ respectively
  • optional dnsmasq features can be enabled by having libnetfilter_conntrack, libnftables and D-Bus development files
  • addr2line for more informative backtraces
  • readline, history and termcap for certain lua and sqlite shell features

There may be stuff that I missed, but that's what I could think of and find.

The package that broke Debian 11 was git. It's just about impossible to sudo apt install git on Debian 11, primarily due to security issues on the packages that git depends on.

Thank you for explaining and the link to the log! :+1:

I think those details were what I was looking for! Thnx! :+1::+1:

The other thing that got me thinking about this was a piece of software that was packed into an AppImage and would not work when used with a distro that was too old Kernel/C version-wise some months ago.
But since I am totally NOT a developer I couldn't remember the stuff that I need to know exactly...

So in case I encounter something like that with Pi-Hole I now know what to look for :grimacing: