Files
chemenu/kb/entities/tools/makepkg.md
T
torben 18ae28f918
CI / verify (push) Failing after 32s
Release / release (push) Successful in 38s
Chemenu 2.1.0 - deterministischer Wissenskompiler
Chemenu kompiliert Rohnotizen zu einem verlinkten, quellengebundenen Wiki:
raw/ -> types/ + tools/ -> kb/ -> reports/. Was mechanisch ist, macht
tools/wikitool; was Urteil braucht, macht ein Agent unter Contracts, deren
Grenzen in Code durchgesetzt sind statt im Prompt.

Dieser Commit ist der Startpunkt der oeffentlichen Historie. Die vorherige
Entwicklung fand in einer privaten Instanz statt und ist nicht Teil dieses
Repositorys; ihre Erzaehlung steht vollstaendig in CHANGES.md, das mit 44
Eintraegen von 0.1.0 bis 2.1.0 erhalten geblieben ist.

Der mitgelieferte Korpus ist ein Testbett und eine Demo: 170 Seiten ueber den
Stack selbst - Gates, Lint, Versionierung, Suche, das Wiki-Muster. Er
dokumentiert das Werkzeug mit den eigenen Mitteln des Werkzeugs.

Lizenz: AGPL-3.0 fuer den Stack (tools/, types/), CC-BY-4.0 fuer die Inhalte.
Die Grenze zwischen beiden ist der Dateiplan, den dist export berechnet -
siehe NOTICE.
2026-09-01 16:26:14 +02:00

130 lines
3.8 KiB
Markdown

---
type: types/entity.md
entity_type: tool
tags: [arch-linux, build-tool, packaging, aur]
created: 2026-07-31
modified: 2026-08-29
related: [Arch Linux, AUR, Aura, 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