MAKEPKG(8)

BEZEICHNUNG
makepkg - Paketbauwerkzeug

ÜBERSICHT

makepkg [Optionen] [UMGVAR=Wert] [UMGVAR+=Wert] …

BESCHREIBUNG

makepkg ist ein Skript zur Automatisierung des Paketbaus. Das Skript benötigt eine zum Paketbau fähige *nix-Plattform sowie ein benutzerdefiniertes Bauskript für jedes Paket, das gebaut werden soll (als PKGBUILD bekannt). Siehe PKGBUILD(5) für Details zur Erstellung Ihrer eigenen Bauskripte.

Der Vorteil eines skriptbasierten Bauvorgangs ist, das die Arbeit nur einmal getan werden muss. Sobald Sie das Bauskript für ein Paket haben, erledigt makepkg den Rest: Es lädt die Quellen herunter und überprüft sie, schaut nach Abhängigkeiten, konfiguriert die Einstellungen zum Bauvorgang, baut das Paket, installiert es in eine temporäre Systemwurzel, nimmt Anpassungen vor, erzeugt Metainformationen und paketiert letztendlich alles, so dass es von Pacman verarbeitet werden kann.

    Hinweis

    makepkg verwendet standardmäßig Ihre gegenwärtige Locale-Einstellung und setzt diese beim Bau von Paketen nicht zurück. Sollten Sie die Ausgaben des Bauvorgangs an andere weitergeben wollen, zum Beispiel wenn Sie Hilfe suchen oder für andere Zwecke, sollten Sie den Befehl »LC_ALL=C makepkg« aufrufen, damit die Protokolle und Ausgaben nicht lokalisiert werden.

OPTIONEN

-A, --ignorearch
    ignoriert ein fehlendes oder unvollständiges »arch«-Feld im Bauskript. Dies kann hilfreich sein, wenn Pakete erneut aus den Quellen gebaut werden, wenn die Datei PKGBUILD nicht mehr vollständig auf dem neuesten Stand ist und nicht mit einem Feld arch=('Ihre_Architektur') geändert wurde.

-c, --clean
    löscht die übriggebliebenen Arbeitsdateien und -verzeichnisse nach einem erfolgreichen Bauvorgang.

--config <Datei>
    verwendet eine alternative Konfigurationsdatei anstelle der voreingestellten /etc/makepkgconf.

-d, --nodeps
    führt keine Abhängigkeitsüberprüfung aus. Auf diese Weise können Sie sämtliche benötigten Abhängigkeiten außer Kraft setzen und ignorieren. Allerdings stehen die Chancen gut, dass dies den Bauprozess scheitern lässt, falls nicht alle Abhängigkeiten installiert sind.

-e, --noextract
    entpackt keine Quelldateien und führt die prepare()-Funktion nicht aus, falls vorhanden; verwendet jegliche bereits vorhandene Quelldateien im Verzeichnis $srcdir/. Dies ist nützlich, wenn Sie den Code im Verzeichnis $srcdir/ manuell patchen oder anderweitig anpassen und daraus das Paket erstellen wollen. Denken Sie aber daran, dass das Erzeugen eines Patches die bessere Lösung sein kann, wenn auch andere in der Lage sein sollen, Ihre Datei PKGBUILD zu nutzen.

--verifysource
    lädt jede der Dateien im »source«-Feld des PKGBUILDs herunter, falls notwendig, und führt die Integritätsprüfungen aus. Es wird nichts entpackt oder gebaut. Die im PKGBUILD angegebenen Abhängigkeiten werden nicht verarbeitet, es sei denn, --syncdeps wurde übergeben. Dies ist für aufeinanderfolgende Offline-Bauvorgänge nützlich.

-f, --force
    erlaubt das Überschreiben eines gebauten Pakets. Normalerweise baut Makepkg kein Paket, falls ein solches bereits im Verzeichnis PKGDEST existiert (konfiguriert in makepkg.conf(5)). PKGDEST ist in der Voreinstellung das aktuelle Verzeichnis.

-g, --geninteg
    lädt jede der Dateien im »source«-Feld des PKGBUILDs herunter, falls notwendig und führt die Integritätsprüfungen aus. Die ausgeführten Integritätsprüfungen werden durch die vorhandenen Anweisungen im PKGBUILD bestimmt. Falls diese fehlen, wird auf den Wert des Felds INTEGRITY_CHECK in makepkg.conf(5) ausgewichen. Diese Ausgabe kann für die Überprüfung der Quellen mittels »makepkg -g >> PKGBUILD« in Ihren PKGBUILD umgeleitet werden.

--skipinteg
    führt keine Integritätsprüfung (Prüfsumme und PGP) von Quelldateien aus.

--skipchecksums
    verifiziert keine Prüfsummen von Quelldateien.

--skippgpcheck
    verifiziert keine PGP-Signaturen von Quelldateien.

-h, --help
    gibt die Syntax und Befehlszeilenoptionen aus.

--holdver
    aktualisiert bei der Verwendung von Quellen aus Versionsverwaltungssystemen (VCS, siehe PKGBUILD(5)) die aktuell ausgecheckten Quellen nicht auf die letzte Revision.

-i, --install
    installiert oder aktualisiert das Paket mit pacman(8) nach einem erfolgreich abgeschlossenen Bauvorgang.

-L, --log
    aktiviert die Protokollierung. Mithilfe des Programms tee wird die Ausgabe jeder PKGBUILD-Funktion sowohl an die Konsole gesendet als auch in einer Datei namens »pkgbase-pkgver-pkgrel-arch-<function>.log« im Bauverzeichnis gespeichert. Wie vorher bereits erwähnt, werden die Protokolle lokalisiert, so dass Sie die Locale entsprechend anpassen sollten, wenn Sie die Ausgabe an andere weitergeben wollen.

-m, --nocolor
    unterbindet die farbliche Darstellung der Ausgaben.

-o, --nobuild
    lädt Dateien herunter und entpackt diese, führt die prepare()-Funktion aus, aber baut kein Paket. Dies ist in Verbindung mit der Option --noextract nützlich, wenn Sie die Dateien in $srcdir/ vor dem Bau bearbeiten wollen.

-p <Bauskript>
    liest das angegebene »Bauskript« anstelle des vorgegebenen PKGBUILD, siehe PKGBUILD(5). Das Bauskript muss sich in dem Verzeichnis befinden, aus dem Makepkg aufgerufen wird.

-r, --rmdeps
    entfernt nach erfolgreichem Bau alle Abhängigkeiten, die Makepkg im Zuge der automatischen Abhängigkeitsauflösung und Installation mit -s installiert hat.

-R, --repackage
    paketiert den Inhalt neu, ohne das Paket tatsächlich neu zu bauen. Dies ist ist in solchen Fällen nützlich, wenn Sie beispielsweise in Ihrem PKGBUILD eine Abhängigkeit oder Datei vergessen haben, aber sich der Bau ansonsten nicht geändert hat.

-s, --syncdeps
    installiert fehlende Abhängigkeiten mittels Pacman. Wenn Bau- oder Laufzeitabhängigkeiten nicht gefunden werden, versucht Pacman, diese aufzulösen. Wenn dies erfolgreich ist, werden die fehlenden Pakete heruntergeladen und installiert.

-S, --source
    baut das Paket nicht wirklich, sondern lediglich einen Quellen-Tarball, der keine Quellen einbezieht, die über eine Download-URL geholt werden können. Dies ist nützlich, wenn Sie einen einzelnen Tarball an ein anderes Programm weitergeben wollen, zum Beispiel eine Chroot-Umgebung, eine ferne Paketbauumgebung oder einen Tarball hochladen wollen. Weil dabei Integritätsprüfungen durchgeführt werden, müssen alle Quelldateien des Pakets vorhanden oder herunterladbar sein.

-V, --version
    zeigt Versionsinformationen an.

-C, --cleanbuild
    löscht Bauartefakte von vorherigen Läufen von makepkg im aktuellen Verzeichnis, indem $srcdir vor dem Bau des Pakets entfernt wird.

-D <Verz>, --dir <Verz>
    Wechselt in das Verzeichnis <Verz> vor dem Lesen von PKGBUILD oder einer anderen Aktion.

--allsource
    baut das Paket nicht wirklich, sondern lediglich einen Quellen-Tarball, der auch Quellen einbezieht, die über eine Download-URL geholt werden können. Dies ist nützlich, wenn Sie einen einzelnen Tarball an ein anderes Programm weitergeben wollen, zum Beispiel eine Chroot-Umgebung oder eine fern Paketbauumgebung. Es werden außerdem die Bedingungen der GPL für die Weitergabe von Binärpaketen erfüllt.

--check
    führt die check()-Funktion in PKGBUILD aus, wobei die Einstellung in makepkg.conf(5) außer Kraft gesetzt wird.

--noarchive
    erstellt am Ende des Bauvorgangs kein Archiv. Dies ist beispielsweise zum Testen der package()-Funktion nützlich oder wenn Ihre Zieldistribution Pacman nicht verwendet.

--nocheck
    führt die check()-Funktion im PKGBUILD nicht aus und verarbeitet auch keine »checkdepends« (Test-Abhängigkeiten).

--noprepare
    führt die prepare()-Funktion im PKGBUILD nicht aus.

--noverify
    führt die verify()-Funktion im PKGBUILD nicht aus.

--sign
    signiert das resultierende Paket mit GPG, wobei die Einstellung in makepkg.conf(5) außer Kraft gesetzt wird.

--nosign
    erzeugt keine Signatur für das gebaute Paket.

--key <Schlüssel>
    gibt einen Schlüssel an, der zum Signieren von Paketen verwendet wird, wobei die GPGKEY-Einstellung in makepkg.conf(5) außer Kraft gesetzt wird. Wenn hier oder in der genannten Konfigurationsdatei nichts angegeben ist, wird der Standardschlüssel aus dem Schlüsselbund verwendet.

--noconfirm
    verhindert, dass Pacman auf Benutzereingaben wartet, bevor mit Operationen fortgefahren wird (wird an Pacman übergeben).

--needed
    weist Pacman an, ein Ziel nicht erneut zu installieren, wenn es bereits auf dem neuesten Stand ist (wird an Pacman übergeben und mit -i / --install verwendet).

--asdeps
    installiert Pakete nicht explizit (wird mit -i / --install verwendet).

--noprogressbar
    verhindert, dass Pacman einen Fortschrittsbalken anzeigt (wird an Pacman übergeben). Dies ist nützlich, wenn Sie die Ausgabe von Makepkg in eine Datei umleiten.

--packagelist
    listet die Namen der Dateien des Pakets auf, die erstellt werden würden, ohne das Paket zu bauen. Die aufgelisteten Dateinamen schließen PKGDEST und PKGEXT ein.

--printsrcinfo
    erzeugt eine SRCINFO-Datei und leitet diese in die Standardausgabe.

WEITERE FUNKTIONALITÄTEN

Makepkg unterstützt den Bau von Entwicklungsversionen von Paketen, ohne dass Sie die »pkgver« im PKGBUILD manuell aktualisieren müssen. Dies wurde früher durch das separate Dienstprogramm versionpkg erledigt. Siehe PKGBUILD(5) für Details zur Einrichtung eines Entwicklungs-PKGBUILDs.

REPRODUZIERBARKEIT

Makepkg wurde mit dem Ziel der Kompatibilität zu »Reproducible Builds« (reproduzierbare Bauvorgänge) entwickelt. Sofern die Umgebungsvariable SOURCE_DATE_EPOCH gesetzt ist, wird diese an die Unterprozesse exportiert und die Zeitstempel der Änderungen in Quelldatei und Paket-Metadaten werden vereinheitlicht, basierend auf dem angegebenen Zeitstempel.

Wenn die Umgebungsvariable SOURCE_DATE_EPOCH nicht gesetzt ist, verwendet Makepkg zwar intern seinen eigenen Startzeitpunkt, vereinheitlicht aber die Zeitstempel der Quelldateien vor dem Bau nicht.

UMGEBUNGSVARIABLEN

MAKEPKG_LIBRARY="/Pfad/zum/Verzeichnis"
    Verwendet einen alternativen libmakepkg-Pfad anstelle des voreingestellten /usr/share/makepkg.

PACMAN
    Der Befehl, der zur Überprüfung auf fehlende Abhängigkeiten und zur Installation und Entfernung von Paketen verwendet wird. Die Pacman-Operationen -Qq, -Rns, -S, -T und -U müssen von diesem Befehl unterstützt werden. Wenn die Variable nicht gesetzt oder leer ist, dann weicht Makepkg auf »pacman« aus.

MAKEPKG_CONF="/Pfad/zur/Datei"
    Verwendet eine alternative Konfigurationsdatei anstelle der voreingestellten /etc/makepkg.conf.

PKGDEST="/Pfad/zum/Verzeichnis"
    Verzeichnis, in dem die resultierenden Pakete gespeichert werden. Dies setzt den in makepkg.conf(5) definierten entsprechenden Wert außer Kraft.

SRCDEST="/Pfad/zum/Verzeichnis"
    Verzeichnis, in dem die heruntergeladenen Quellen gespeichert werden. Dies setzt den in makepkg.conf(5) definierten entsprechenden Wert außer Kraft.

SRCPKGDEST="/Pfad/zum/Verzeichnis"
    Verzeichnis, in dem die Quellpaketdateien gespeichert werden. Dies setzt den in makepkg.conf(5) definierten entsprechenden Wert außer Kraft.

LOGDEST="/Pfad/zum/Verzeichnis"
    Verzeichnis, in dem die erzeugten Protokolldateien gespeichert werden. Dies setzt den in makepkg.conf(5) definierten entsprechenden Wert außer Kraft.

PACKAGER="John Doe <john@doe.com>"
    Zeichenkette, die den Ersteller des resultierenden Pakets identifiziert. Dies setzt den in makepkg.conf(5) definierten entsprechenden Wert außer Kraft.

BUILDDIR="/Pfad/zum/Verzeichnis"
    Verzeichnis, in dem das Paket gebaut wird. Dies setzt den in makepkg.conf(5) definierten entsprechenden Wert außer Kraft.

CARCH="(i686|x86_64)"
    erzwingt den Bau für eine spezifische Architektur. Dies ist für Cross-Kompilierung nützlich. Dies setzt den in makepkg.conf(5) definierten entsprechenden Wert außer Kraft.

PKGEXT=".pkg.tar.gz", SRCEXT=".src.tar.gz"
    Legt den zum Bau von kompilierter oder Quellpakete verwendeten Kompressionsalgorithmus fest. Dies setzt den in makepkg.conf(5) definierten entsprechenden Wert außer Kraft.

GNUPGHOME="/Pfad/zum/Verzeichnis"
    Verzeichnis, in dem der GPG-Schlüsselbund zum Signieren des gebauten Pakets gespeichert ist.

GPGKEY="Schlüsselkennung"
    Gibt einen zum Signieren von Paketen zu verwendenden Schlüssel an. Dies setzt die in makepkg.conf(5) definierten GPGKEY-Einstellung außer Kraft.

SOURCE_DATE_EPOCH="<Datum>"
    Wird für reproduzierbare Bauvorgänge verwendet.

BUILDTOOL="<Name>"
    Der Name des Werkzeug-Ökosystems, mit dem die Bauumgebung eingerichtet wird. Damit wird die Ausführung reproduzierbarer Bauvorgänge (»reproducible builds«) konfiguriert, zum Beispiel die verwendete Datei makepkg.conf(5).

BUILDTOOLVER="<Version>"
    Die Version des verwendeten $BUILDTOOL.

MAKEPKG_LINT_PKGBUILD=0 Setzen auf 0 deaktiviert Linting innerhalb von makepkg. Nützlich auf Systemen mit langsamen bash(1)-Subshell-Operationen oder auf PKGBUILDs mit extremen Mengen von Paketauftrennungen.

KONFIGURATION

In makepkg.conf(5) finden Sie weitere Details zur Konfiguration von Makepkg mit Hilfe der Datei makepkg.conf.

FEHLER

Beim Beenden gibt Makepkg einen der folgenden Fehlercodes aus.

0
    Normales Beenden.

1
    Fehler mit unbekannter Ursache.

2
    Fehler in der Konfigurationsdatei.

3
    Benutzer hat eine unzulässige Option angegeben.

4
    Fehler in einer durch den Benutzer angegebenen Funktion im PKGBUILD.

5
    Erstellung eines brauchbaren Pakets ist fehlgeschlagen.

6
    Eine Quelle oder im PKGBUILD angegebene externe Datei fehlt.

7
    Das Verzeichnis PKGDIR fehlt.

8
    Abhängigkeiten konnten nicht installiert werden.

9
    Abhängigkeiten konnten nicht entfernt werden.

10
    Der Benutzer hat versucht, Makepkg mit Systemverwalterrechten auszuführen.

11
    Dem Benutzer fehlen die Zugriffsrechte, um ein Paket am gegebenen Ort zu bauen oder zu installieren.

12
    Fehler bei der Auswertung des PKGBUILD.

13
    Es wurde bereits ein Paket gebaut.

14
    Die Installation des Pakets ist fehlgeschlagen.

15
    Zur Ausführung von Makepkg erforderliche Programme fehlen.

16
    Der angegebene GPG-Schlüssel existiert nicht oder das Verschlüsseln des Pakets ist fehlgeschlagen.

17
    Das lokale Repositorium ist kein Klon des in PKGBUILD festgelegten Quellrepositoriums.

SIEHE AUCH

makepkg.conf(5), PKGBUILD(5), pacman(8)

Auf der Pacman-Website (https://archlinux.org/pacman/) finden Sie aktuelle Informationen zu Pacman und den zugehörigen Werkzeugen.

FEHLER

Fehler? Sie machen wohl Witze, es gibt keine Fehler in dieser Software. Nun ja, sollte unsere Annahme doch falsch sein, berichten Sie diese (auf Englisch) in dem Fehlererfassungssystem unter https://gitlab.archlinux.org/pacman/pacman/-/issues zusammen mit den konkreten Informationen wie Ihre Befehlszeile, die Art des Fehlers und sogar der Paketdatenbank, falls das hilft.

AUTOREN

Derzeitige Betreuer:

    • Allan McRae (allan@archlinux.org)

    • Andrew Gregory (andrew.gregory.8@gmail.com)

    • Morgan Adamiec (morganamilo@archlinux.org)

Bedeutende frühere Mitwirkende:

    • Judd Vinet (jvinet@zeroflux.org)

    • Aurelien Foret (aurelien@archlinux.org)

    • Aaron Griffin (aaron@archlinux.org)

    • Dan McGee (dan@archlinux.org)

    • Xavier Chantry (shiningxc@gmail.com)

    • Nagy Gábor (ngaba@bibl.u-szeged.hu)

    • Dave Reisner (dreisner@archlinux.org)

    • Eli Schwartz (eschwartz@archlinux.org)

Informationen zu weiteren Mitwirkenden erhalten Sie, wenn Sie den Befehl git shortlog -s im Git-Repositorium pacman.git aufrufen.

ÜBERSETZUNG
Die deutsche Übersetzung dieser Handbuchseite wurde von Mario Blättermann <mario.blaettermann@gmail.com> und Helge Kreutzmann <debian@helgefjell.de> erstellt.

Diese Übersetzung ist Freie Dokumentation; lesen Sie die GNU General Public License Version 3 (https://www.gnu.org/licenses/gpl-3.0.html) oder neuer bezüglich der Copyright-Bedingungen. Es wird KEINE HAFTUNG übernommen.

Wenn Sie Fehler in der Übersetzung dieser Handbuchseite finden, schicken Sie bitte eine E-Mail an die Mailingliste der Übersetzer (debian-l10n-german@lists.debian.org).