18ae28f918
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.
130 lines
3.8 KiB
Markdown
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
|