--- type: types/entity.md entity_type: tool tags: [arch-linux, build-tool, packaging, aur] created: 2026-07-31 modified: 2026-08-29 related: - part-of: Arch Linux - AUR - Aura - uses: GPG sources: [Source - Arch Linux Cheat Sheet] confidence: 0.95 confidence_base: 0.95 provenance: sourced summary: Build-Werkzeug von Arch Linux; wertet PKGBUILD-Dateien aus, um Quellcode zu übersetzen und installierbare Pakete zu erzeugen. --- # makepkg **Typ:** tool ## Beschreibung `makepkg` ist das Build-Tool, das von Arch Linux verwendet wird, um Software aus dem Quellcode zu kompilieren und zu paketieren. Es liest PKGBUILD-Dateien, lädt die Quelle herunter, erstellt die Software und erzeugt `.pkg.tar.zst`-Pakete, die mit `pacman` installiert werden können. ## Kerndaten - **Zweck:** Arch-Linux-Pakete aus PKGBUILD-Skripten erstellen - **Status:** Aktiv (Core-Arch-Linux-Tool) - **Sprache:** Bash - **Paket:** Teil des `pacman`-Pakets (`base-devel` Gruppe) - **Dokumentation:** https://man.archlinux.org/man/PKGBUILD.5 ## Features - **PKGBUILD-Analyse:** Liest Build-Anweisungen aus PKGBUILD-Dateien - **Abhängigkeitsauflösung:** Installiert automatisch Build-Abhängigkeiten - **Quellverifikation:** Validiert Prüfsummen heruntergeladener Quellen - **Paketerstellung:** Erzeugt installierbare `.pkg.tar.zst`-Pakete - **Signaturunterstützung:** Kann Pakete mit GPG signieren ## Verwendung in CI/CD In Docker-basierten CI/CD-Umgebungen erfordert `makepkg` besondere Handhabung, da es traditionell Root-Privilegien benötigt: ```dockerfile FROM archlinux:base-devel # base-devel includes: gcc, make, autoconf, automake, binutils, bison, # fawk, flex, gawk, gettext, groff, libtool, m4, pacman, patch, # pkgconf, sed, texinfo ``` ### Umgehung der Root-Einschränkung **Das Problem:** `makepkg` benötigt Root für: - Installation von Build-Abhängigkeiten - Erstellung von Paketen - Verwaltung der Paketdatenbank **Die Lösung:** 1. Einen nicht-Root-`builder`-Benutzer erstellen 2. Passwortloses sudo gewähren: `echo "builder ALL=(ALL) NOPASSWD:ALL" >> /etc/sudoers` 3. Zu Builder wechseln: `su - builder -c "cd /workspace && makepkg"` ### Build-Workflow-Muster ```yaml jobs: build-arch-package: runs-on: linux-docker container: image: archlinux:base-devel steps: - name: Create builder user run: | useradd -m builder echo "builder ALL=(ALL) NOPASSWD:ALL" >> /etc/sudoers su - builder -c "cd /workspace && makepkg" - name: Upload artifacts uses: actions/upload-artifact@v3 with: name: arch-packages path: /workspace/*.pkg.tar.zst ``` ## Häufige Befehle ```bash # Build package in current directory makepkg # Verify source integrity makepkg --verifysource # Force rebuild (skip extraction and preparation) makepkg --noextract --noprepare -f # Generate .SRCINFO file makepkg --printsrcinfo > .SRCINFO # Install build dependencies makepkg --syncdeps ``` ## Best Practices 1. **Immer Quellen verifizieren:** Das Flag `--verifysource` verwenden 2. **`--skipinteg` nie verwenden:** Dies umgeht Integritätsprüfungen 3. **.SRCINFO neu generieren:** Immer `makepkg --printsrcinfo > .SRCINFO` verwenden, nie manuell bearbeiten 4. **Saubere Builds:** Lokale Dateien vor dem Starten löschen (als abgelaufen betrachten) 5. **Zweistufiges Bauen:** - Schritt 1: `makepkg --verifysource -f` - Quellintegrität überprüfen - Schritt 2: `makepkg --noextract --noprepare -f` - Bauen mit vorgezogenem src/ ## Beziehungen - **Teil von:** [[Arch Linux]] Paketverwaltungs-Ökosystem - **Verwendet mit:** [[AUR]] zum Erstellen von Community-Paketen - **Funktioniert mit:** [[Aura]] AUR-Helfer Workflow CI/CD-Infrastruktur - **Signiert mit:** [[GPG]] für Paketverifikation ## Siehe auch - [[Arch Linux]] - [[AUR]] - [[Aura]] - [[GPG]] - https://wiki.archlinux.org/title/makepkg - https://man.archlinux.org/man/makepkg.8 ## Beziehungen - **part-of:** [[Arch Linux]] - [[AUR]] - [[Aura]] - **uses:** [[GPG]]