Build Scripts
This directory contains build scripts that run during image creation via bind mounts in the Containerfile.
How It Works
Scripts are named with a number prefix and run in ascending order during the container build process. Each script is bind-mounted into the build container and executed individually.
Included Scripts
10-repos.sh- RPM Fusion repositories einrichten (frei + nonfree)20-multimedia.sh- Mesa Freeworld, Codecs, FFmpeg, GStreamer, Intel-Media-Treiber30-virt.sh- Virtualisierung (libvirt, QEMU), Plasma-Setup, Distrobox, Micro, etc.40-remove-packages.sh- Entfernt unerwuenschte Pakete (Firefox, Plasma Discover)50-prepare-flatpak-for-bazaar.sh- Laedt Flathub-Repo-Definition fuer Bazaar
Hilfsscript
copr-helpers.sh- Funktionen fuer sichere COPR-Repo-Installation (enable, install, disable)
Erstellung eigener Scripts
# Neues Script mit nummeriertem Prefix erstellen
# Die Number bestimmt die Ausfuehrungsreihenfolge
#!/usr/bin/bash
set -eoux pipefail
echo "Installiere Pakete..."
dnf5 install -y --allowerasing some-package
Best Practices
- Beschreibende Namen:
25-nvidia.shstatt25-stuff.sh - Ein Script pro Zweck: Einfacher zu debuggen und zu warten
- Aufraeumen: Temporaere Dateien entfernen, temporaere Repos deaktivieren
- Inkrementell testen: Ein Script nach dem anderen hinzufuegen
- Kommentare: Das zukuenftige Ich wird es schaetzen
Script deaktivieren
Ohne Loeschen deaktivieren:
- Umbenennen:
20-script.sh→20-script.sh.disabled - Execute-Recht entfernen:
chmod -x build/20-script.sh
Ausfuehrung im Containerfile
RUN --mount=type=bind,from=ctx,source=/build/10-repos.sh,target=/tmp/10-repos.sh \
--mount=type=cache,dst=/var/cache \
--mount=type=tmpfs,dst=/tmp \
bash /tmp/10-repos.sh && dnf5 clean all
Hinweise
- Scripts laufen als root waehrend des Builds
- Build-Kontext ist ueber Bind-Mounts verfuegbar
- Nutze
dnf5fuer Paketverwaltung (nicht dnf oder yum) - Immer
-yFlag fuer nicht-interaktive Installationen verwenden - Cache-Mounts (
--mount=type=cache) verhindern Neudownload bei Aenderungen