fix: netavark GLIBC mismatch in ISO, container adopt, app updates

ISO build no longer copies netavark from build host (Debian 13/GLIBC 2.41)
which broke container networking on Debian 12 targets. Rootfs already
installs netavark from Debian 12 repos — just configure the backend.

Install RPC now adopts existing containers (from first-boot) instead of
erroring on duplicates. Container scanner extracts real versions from
image tags and detects available updates against pinned versions.

Frontend shows update button with version info when updates are available.

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
This commit is contained in:
Dorian
2026-04-09 11:47:35 +02:00
parent d0b9f168f4
commit a8c6a36cd1
21 changed files with 830 additions and 66 deletions

View File

@@ -905,14 +905,10 @@ mkdir -p "$ARCH_DIR"
mkdir -p "$ARCH_DIR/bin"
mkdir -p "$ARCH_DIR/scripts"
# Embed netavark + aardvark-dns for container DNS (podman CNI lacks DNS)
if [ -f /usr/lib/podman/netavark ] && [ -f /usr/lib/podman/aardvark-dns ]; then
cp /usr/lib/podman/netavark "$ARCH_DIR/bin/netavark"
cp /usr/lib/podman/aardvark-dns "$ARCH_DIR/bin/aardvark-dns"
echo " Embedded netavark + aardvark-dns in ISO"
else
echo " WARNING: netavark/aardvark-dns not found — install with: apt install aardvark-dns netavark"
fi
# netavark + aardvark-dns are installed in the rootfs via Dockerfile.rootfs (Debian 12 packages).
# Do NOT copy from the build host — the host may run a newer glibc (e.g. Debian 13)
# and the resulting binary will fail on the Debian 12 target with GLIBC_2.39 not found.
echo " netavark + aardvark-dns: included in rootfs (Debian 12 packages)"
# Copy the pre-built rootfs
echo " Including root filesystem..."
@@ -2033,24 +2029,18 @@ insecure = true
REGCONF
chown -R 1000:1000 /mnt/target/home/archipelago/.config
# Install netavark + aardvark-dns for container DNS resolution on archy-net.
# Debian 12's podman defaults to CNI which lacks DNS. Netavark provides built-in DNS.
# Binaries are embedded in the ISO at build time (archipelago/bin/).
if [ -f "$BOOT_MEDIA/archipelago/bin/netavark" ] && [ -f "$BOOT_MEDIA/archipelago/bin/aardvark-dns" ]; then
mkdir -p /mnt/target/usr/lib/podman
cp "$BOOT_MEDIA/archipelago/bin/netavark" /mnt/target/usr/lib/podman/netavark
cp "$BOOT_MEDIA/archipelago/bin/aardvark-dns" /mnt/target/usr/lib/podman/aardvark-dns
chmod +x /mnt/target/usr/lib/podman/netavark /mnt/target/usr/lib/podman/aardvark-dns
# Configure podman to use netavark backend (enables container DNS)
# Configure podman to use netavark backend (enables container DNS on archy-net).
# netavark + aardvark-dns binaries come from the rootfs (Debian 12 apt packages).
if [ -f /mnt/target/usr/lib/podman/netavark ]; then
mkdir -p /mnt/target/home/archipelago/.config/containers
cat > /mnt/target/home/archipelago/.config/containers/containers.conf <<'CONTAINERSCONF'
[network]
network_backend = "netavark"
CONTAINERSCONF
chown -R 1000:1000 /mnt/target/home/archipelago/.config/containers
echo " Installed netavark + aardvark-dns (container DNS enabled)"
echo " Configured netavark backend (container DNS enabled)"
else
echo " WARNING: netavark/aardvark-dns not found in ISO — container DNS will not work"
echo " WARNING: netavark not found in rootfs — container DNS will not work"
fi
# Laptop support: ignore lid close so server keeps running