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.
-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.
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.
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.
GITFLAGS
Die beim Auschecken der Git-Quellen zu übergebenen
Optionen, die den standardmäßigen »--mirror«
ersetzen.
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.
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> und Helge
Kreutzmann <debian@helgefjell.de> 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.