MAKEPKG(8) Pacman-Handbuch MAKEPKG(8)

makepkg - Paketbauwerkzeug

ÜBERSICHT

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

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.

-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

entfernt das Verzeichnis $srcdir vor dem Bau des Pakets.

--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.

--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.

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.

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.

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.

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

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.

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

Auf der Pacman-Website finden Sie aktuelle Informationen zu Pacman und den zugehörigen Werkzeugen.

Fehler? Sie machen wohl Witze, es gibt keine Fehler in dieser Software. Nun ja, sollte unsere Annahme doch falsch sein, senden Sie uns einen Fehlerbericht (auf Englisch) mit so vielen Details wie möglich in der Fehlerdatenbank von Archlinux im Bereich »Pacman«.

Derzeitige Betreuer:

Bedeutende frühere Mitwirkende:

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> erstellt.

Diese Übersetzung ist Freie Dokumentation; lesen Sie die GNU General Public License Version 3 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.

6. Februar 2024 Pacman 6.0.2