Friday 29 September 2017

Arch Fakeroot Binary Optionen


Arch Build System Was ist das Arch Build System Das Arch Build System ist ein ports-ähnliches System für den Aufbau und die Verpackung von Software aus Quellcode. Während pacman das spezialisierte Arch-Tool für die binäre Paketverwaltung (einschließlich der Pakete mit dem ABS) ist, ist ABS eine Sammlung von Tools für das Kompilieren der Quelle in installierbare. pkg. tar. xz-Pakete. Was ist ein Ports-like-System Ports ist ein System von BSD verwendet, um den Prozess der Erstellung von Software aus Quellcode zu automatisieren. Das System verwendet einen Port zum Herunterladen, Entpacken, Patchen, Kompilieren und Installieren der gegebenen Software. Ein Port ist lediglich ein kleines Verzeichnis auf dem Benutzercomputer, benannt nach der entsprechenden zu installierenden Software, die einige Dateien mit den Anweisungen zum Erstellen und Installieren der Software von der Quelle enthält. Dies macht die Installation von Software so einfach wie die Eingabe machen oder machen Installation sauber innerhalb des Ports-Verzeichnis. ABS ist ein ähnliches Konzept ABS besteht aus einem Verzeichnisbaum (der ABS-Baum) wohnhaft unter var abs. Dieser Baum enthält viele Unterverzeichnisse, jeweils innerhalb eines Repo-Namens und jeweils benannt nach ihrem jeweiligen Paket. Dieser Baum repräsentiert (aber nicht enthalten) alle offiziellen Arch-Software. Abrufbar durch das SVN-System. Sie können sich auf jedes Paket namens Subdirectory als ABS beziehen, so wie man es auf einen Port verweisen würde. Diese ABS (oder Unterverzeichnisse) enthalten weder das Softwarepaket noch die Quelle, sondern eine PKGBUILD-Datei (und manchmal auch andere Dateien). Ein PKGBUILD ist ein einfaches Bash-Build-Skript, eine Textdatei, die die Kompilierungs - und Verpackungsanweisungen sowie die URL des entsprechenden Quell-Tarballs enthält, die heruntergeladen werden soll. (Die wichtigste Komponente von ABS sind PKGBUILDs.) Durch die Ausgabe im ABS-Befehl makepkg wird die Software zuerst kompiliert und anschließend im Build-Verzeichnis verpackt. Jetzt können Sie pacman (den Arch Linux Paketmanager) verwenden, um das neue Paket zu installieren, zu aktualisieren und zu entfernen. ABS-Übersicht ABS kann als Umbrella-Begriff verwendet werden, da er einige andere Komponenten enthält, die aber nicht technisch korrekt sind, kann sich ABS auf folgende Werkzeuge als komplettes Toolkit beziehen: ABS-Baum Die ABS-Verzeichnisstruktur, die Dateien enthält, die benötigt werden, um alle zu bauen (Nicht aber die Pakete selbst oder die Quelldateien der Software). Es ist in svn und git Repositories und das abs-Skript (aus dem Paket abs) lädt sie mit rsync in var abs auf Ihrer (lokalen) Maschine. Auf dem lokalen System enthält der Baum Unterverzeichnisse für jedes in der abs. conf angegebene Repository. Die wiederum ein Unterverzeichnis für jedes Paket enthalten. Hinweis: ABS-Baum synchronisiert einmal am Tag, so kann es hinter dem, was bereits verfügbar ist, in den Repositories. PKGBUILD Ein Bash-Skript, das die URL des Quellcodes zusammen mit den Zusammenstellungs - und Verpackungsanweisungen enthält. Makepkg-Shell-Befehls-Tool, das die PKGBUILDs liest, automatisch herunterlädt und kompiliert die Quellen und erstellt eine. pkg. tar entsprechend dem PKGEXT-Array in makepkg. conf. Sie können auch makepkg verwenden, um eigene Pakete aus den AUR - oder Drittanbieter-Quellen zu erstellen. Weitere Informationen finden Sie unter Erstellen von Paketen. Pacman pacman ist vollständig getrennt, wird aber notwendigerweise entweder von makepkg oder manuell aufgerufen, um die installierten Pakete zu installieren und zu entfernen und Abhängigkeiten abzurufen. AUR Das Arch User Repository ist von ABS getrennt, aber AUR (nicht unterstützt) PKGBUILDs werden mit makepkg erstellt, um Software zu kompilieren und zu verpacken. Im Gegensatz zum ABS-Baum auf Ihrem lokalen Rechner existiert die AUR als Web-Oberfläche. Es enthält viele Tausende von Benutzer-PKGBUILDs für Software, die als offizielle Arch-Paket nicht verfügbar ist. Wenn Sie ein Paket außerhalb des offiziellen Arch-Baums bauen müssen, stehen die Chancen im AUR. Warnung: Offizielle PKGBUILDs nehmen an, dass Pakete in einem sauberen chroot gebaut werden. Das Erstellen von Software auf einem Dirty-Build-System kann fehlschlagen oder unerwartetes Verhalten zur Laufzeit verursachen, denn wenn das Build-System Abhängigkeiten dynamisch erkennt, hängt das Ergebnis davon ab, welche Pakete auf dem Build-System verfügbar sind. Warum sollte ich ABS verwenden? Das Arch Build System wird verwendet, um: Kompilieren oder Rekompilieren eines Pakets aus irgendeinem Grund Erstellen und Installieren neuer Pakete aus der Quellsoftware, für die noch keine Pakete verfügbar sind (siehe Erstellen von Paketen) Passen Sie vorhandene Pakete an (ZB mit pacbuilder) Saubere Erstellung und Installation eigener kernel (siehe Kernel compilation) Erhalten Sie Kernel-Module, die mit Ihrem benutzerdefinierten Kernel kompilieren und kompilieren Installieren Sie eine neuere, ältere, beta oder Entwicklungsversion eines Arch-Pakets, indem Sie die Versionsnummer im PKGBUILD-ABS bearbeiten. Es ist nicht notwendig, Arch Linux zu verwenden, aber es ist nützlich für die Automatisierung bestimmter Aufgaben der Quellkompilierung. Wie man ABS-Baupakete mit abs einsetzt, besteht aus folgenden Schritten: Installieren Sie das abs-Paket mit pacman. Führen Sie abs als root aus, um den ABS-Baum zu erstellen, indem Sie ihn mit dem Arch Linux-Server synchronisieren. Kopieren Sie die Build-Dateien (in der Regel unter var abs ltrepogt ltpkgnamegt) in ein Build-Verzeichnis. Navigieren Sie zu diesem Verzeichnis, bearbeiten Sie die PKGBUILD (falls erforderlich) und machen makepkg. Nach den Anweisungen im PKGBUILD lädt makepkg das entsprechende Quell-Tarball herunter, entpackt es, patch (falls gewünscht), kompiliert nach den in makepkg. conf angegebenen CFLAGS. Und schließlich komprimieren Sie die eingebauten Dateien in ein Paket mit der Erweiterung. pkg. tar. gz oder. pkg. tar. xz. Installieren ist so einfach wie mit pacman - U lt. pkg. tar. xz filegt. Die Entfernung des Pakets erfolgt ebenfalls durch pacman. Installieren von Tools Dies wird die abs-sync-Skripte, verschiedene Build-Skripts und rsync (als eine Abhängigkeit, wenn Sie es nicht bereits haben) greifen. Bevor Sie tatsächlich etwas bauen können, benötigen Sie auch grundlegende Kompilierungstools. Diese werden in der Paketgruppe base-devel gesammelt. Diese Gruppe kann mit pacman installiert werden. Etc abs. conf Bearbeiten Sie etc abs. conf, um Ihre gewünschten Repositories einzubinden. Entferne das. Vor den entsprechenden Repositories. Beispiel: Der ABS-Baum ist eine SVN-Verzeichnis-Hierarchie unter var abs und sieht folgendermaßen aus: Der ABS-Baum hat genau die gleiche Struktur wie die Paketdatenbank: First-level: Repository name Second-level: Paketnamenverzeichnisse Dritte Ebene: PKGBUILD (Enthält Informationen, die benötigt werden, um ein Paket zu erstellen) und andere verwandte Dateien (Patches, andere Dateien, die für das Erstellen des Pakets erforderlich sind) Der Quellcode für das Paket ist nicht im ABS-Verzeichnis vorhanden. Stattdessen enthält die PKGBUILD eine URL, die den Quellcode beim Erstellen des Pakets herunterlädt. Also die Größe der Baum abs ist recht klein. Download ABS-Baum Ihr ABS-Baum wird nun unter var abs erstellt. Beachten Sie, dass Baumzweige erstellt wurden, die denen entsprechen, die Sie in abs. conf angegeben haben. Der ABS-Befehl sollte in regelmäßigen Abständen ausgeführt werden, um synchron mit den offiziellen Repositories zu bleiben. Einzelne ABS-Paket-Dateien können auch heruntergeladen werden mit: Auf diese Weise müssen Sie nicht die ganze abs-Baum nur um ein Paket zu bauen. Etc makepkg. conf Anmerkungen: Bitte verwenden Sie das zweite Argument der Vorlage, um genauere Angaben zu machen. Makepkg s etc makepkg. conf gibt globale Umgebungsvariablen und Compiler-Flags an, die Sie bearbeiten möchten, wenn Sie ein SMP-System verwenden oder andere gewünschte Optimierungen angeben. Die Standardeinstellungen sind für i686- und x8664-Optimierungen, die für alle Architekturen auf Single-CPU-Systemen funktionieren. (Die Vorgabewerte funktionieren auf SMP-Maschinen, verwenden aber bei der Kompilierung nur eine Core-CPU.) Setzen Sie die PACKAGER-Variable in etc makepkg. conf Einstellen der PACKAGER-Variable in etc makepkg. conf ist ein optionaler, aber sehr empfehlenswerter Schritt. Es ermöglicht eine Fahne schnell zu identifizieren, welche Pakete wurden gebaut und oder installiert von YOU, nicht die offizielle Maintainer Dies ist leicht mit expac durchgeführt. Alle Pakete (auch solche aus AUR) anzeigen Nur Pakete anzeigen, die in repos enthalten sind In diesem Beispiel werden nur die Pakete angezeigt, die in den in pacman. conf definierten Repos enthalten sind. Erstellen eines Build-Verzeichnisses Es empfiehlt sich, ein Build-Verzeichnis zu erstellen, in dem die eigentliche Kompilierung stattfinden soll, um den ABS-Baum niemals zu verändern, da die Daten bei jedem ABS-Update verloren gehen (überschrieben) werden. Es ist gut, Ihr Home-Verzeichnis zu verwenden, obwohl einige Arch-Benutzer es vorziehen, ein lokales Verzeichnis unter var abs zu erstellen. Im Besitz eines normalen Benutzers. Erstellen Sie Ihr Build-Verzeichnis. z. B. Kopieren Sie das ABS aus dem Baum (var abs ltrepositorygt ltpkgnamegt) in das Build-Verzeichnis. Build-Paket In unserem Beispiel erstellen wir das schlanke Display-Manager-Paket. Kopieren Sie die schlanke ABS aus dem ABS-Baum in ein Build-Verzeichnis: Navigieren Sie zum Build-Verzeichnis: Ändern Sie den PKGBUILD nach Ihren Wünschen. Wenn Sie Änderungen an der Quelle selbst und nicht nur am PKGBUILD vornehmen müssen, siehe Patching in ABS. Führen Sie dann makepkg aus (mit der - s - Flag, um die automatisierte Build-Time-Abhängigkeitsbehandlung zu aktivieren): Hinweis: Bevor Sie sich über fehlende (make) Abhängigkeiten beschweren, ist zu beachten, dass die group base-devel als buildpkg installiert wird. Siehe Installieren von Tools. Als root installieren: Das ist es. Sie haben gerade schlank aus der Quelle gebaut und sauber installiert, um es auf Ihrem System mit pacman. Paketentfernung wird auch von pacman mit pacman - R schlank. Die ABS-Methode der Installation von Software bietet Komfort, während immer noch vollständige Transparenz und Kontrolle über die Build-und Install-Funktionen in der PKGBUILD enthalten. Im Wesentlichen werden die gleichen Schritte in der traditionellen Methode (in der Regel einschließlich der. Configure, make, make Installationsschritte) ausgeführt, aber die Software wird in einer gefälschten Root-Umgebung installiert. (Eine gefälschte Wurzel ist einfach ein Unterverzeichnis innerhalb des Build-Verzeichnisses, das funktioniert und sich wie das System-Root-Verzeichnis verhält.) In Verbindung mit dem fakeroot-Programm erstellt makepkg ein gefälschtes Wurzelverzeichnis und installiert die kompilierten Binärdateien und zugehörigen Dateien mit root Besitzer.) Die gefälschte Wurzel. Oder Unterverzeichnisbaum, der die kompilierte Software enthält, wird dann in ein Archiv mit der Erweiterung. pkg. tar. xz komprimiert. Oder ein Paket. Wenn es aufgerufen wird, extrahiert pacman das Paket (installiert es) in das reale Systemverzeichnis (). Beibehalten von modifizierten Paketen Das Aktualisieren des Systems mit pacman ersetzt ein modifiziertes Paket von ABS mit dem Paket des gleichen Namens aus den offiziellen Repositories. Beachten Sie die folgenden Anweisungen, wie Sie dies vermeiden können. Fügen Sie ein Gruppenarray in das PKGBUILD ein, und fügen Sie das Paket zu einer Gruppe hinzu, die modifiziert wurde. Füge diese Gruppe zum Abschnitt IgnoreGroup in etc pacman. conf hinzu. Wenn neue Versionen in den offiziellen Repositories während eines Systemupdates verfügbar sind, druckt pacman eine Notiz, dass es dieses Update überspringt, da es sich im Abschnitt IgnoreGroup befindet. An diesem Punkt sollte das modifizierte Paket von ABS umgebaut werden, um teilweise Upgrades zu vermeiden. Andere Werkzeuge pbget - Abrufen von PKGBUILDs für einzelne Pakete direkt über das Webinterface. Inklusive AUR-Unterstützung. Asp - ein Tool zum Verwalten der Quelldateien für die Erstellung von Arch Linux Paketen. Verwendet die git-Schnittstelle, die mehr aktuelle Quellen bietet. Erstellen von Paketen Dieser Artikel zielt darauf ab, Benutzer zu helfen, ihre eigenen Pakete mit dem Arch Linux-Ports-wie Build-System zu erstellen. Auch für die Einreichung in AUR. Es umfasst die Erstellung eines PKGBUILD 8211 eine Paket-Beschreibungsdatei, die von makepkg bezogen wird, um ein binäres Paket aus der Quelle zu erstellen. Wenn bereits im Besitz eines PKGBUILD. Siehe makepkg. Anweisungen bezüglich bestehender Regeln und Möglichkeiten zur Verbesserung der Paketqualität finden Sie unter Arch-Verpackungsstandards. Pakete in Arch Linux werden mit dem Dienstprogramm makepkg und den in einer PKGBUILD-Datei gespeicherten Informationen erstellt. Wenn makepkg läuft, sucht es nach einem PKGBUILD im aktuellen Verzeichnis und folgt den darin enthaltenen Anweisungen, um die benötigten Dateien zu erfassen und zu kompilieren, um sie in einer Paketdatei (pkgname. pkg. tar. xz) zu packen. Das resultierende Paket enthält Binärdateien und Installationsanweisungen, die von pacman installiert werden können. Ein Arch-Paket ist nicht mehr als ein tar-Archiv oder tarball, komprimiert mit xz, das die folgenden Dateien enthält, die von makepkg erzeugt werden: Die binären Dateien, die installiert werden sollen..PKGINFO. Enthält alle Metadaten, die von pacman benötigt werden, um mit Paketen, Abhängigkeiten usw. umzugehen. Enthält Hashes und Zeitstempel der Dateien, die in der lokalen Datenbank enthalten sind, so dass pacman die Integrität des Pakets überprüfen kann..INSTALLIEREN. Eine optionale Datei, die zum Ausführen von Befehlen nach dem Installieren des Upgrades verwendet wird. (Diese Datei ist nur vorhanden, wenn sie im PKGBUILD angegeben ist.).Changelog. Eine optionale Datei, die vom Paketbetreuer aufbewahrt wird und die Änderungen des Pakets dokumentiert. (Es ist nicht in allen Paketen vorhanden.) Meta-Pakete und Gruppen Eine Paketgruppe ist eine Reihe von verknüpften Paketen, die vom Paketierer definiert werden und gleichzeitig unter Verwendung des Gruppennamens als Ersatz für jeden einzelnen Paketnamen installiert oder deinstalliert werden können. Während eine Gruppe kein Paket ist, kann sie in ähnlicher Weise wie ein Paket installiert werden, siehe PacmanInstalling-Paketgruppen und PKGBUILDgroups. Ein Meta-Paket, das oft (wenn auch nicht immer) mit dem - meta-Suffix betitelt ist, bietet ähnliche Funktionalitäten für eine Paketgruppe, dass mehrere verwandte Pakete gleichzeitig installiert oder deinstalliert werden können. Meta-Pakete können wie jedes andere Paket installiert werden, siehe PacmanInstalling spezifische Pakete. Der einzige Unterschied zwischen einem Meta-Paket und einem regulären Paket besteht darin, dass ein Meta-Paket leer ist und nur dazu existiert, verwandte Pakete über Abhängigkeiten miteinander zu verknüpfen. Der Vorteil eines Meta-Pakets gegenüber einer Gruppe besteht darin, dass alle neuen Mitgliederpakete installiert werden, wenn das Meta-Paket selbst mit einem neuen Satz von Abhängigkeiten aktualisiert wird. Dies steht im Gegensatz zu einer Gruppe, in der neue Gruppenmitglieder nicht automatisch installiert werden. Der Nachteil eines Meta-Pakets ist, dass es nicht so flexibel wie eine Gruppe ist - Sie können wählen, welche Gruppenmitglieder Sie installieren möchten, aber Sie können nicht auswählen, welche Meta-Paket-Abhängigkeiten Sie installieren möchten. Ebenso können Sie Gruppenmitglieder deinstallieren, ohne die gesamte Gruppe entfernen zu müssen, jedoch können Sie keine Meta-Paket-Abhängigkeiten entfernen, ohne das Meta-Paket selbst deinstallieren zu müssen. Vorbereitung Vorbereitende Software Stellen Sie zunächst sicher, dass die notwendigen Werkzeuge installiert sind. Das Installieren der Paketgruppe base-devel sollte ausreichen, es enthält make und zusätzliche Tools, die für die Kompilierung von der Quelle benötigt werden. Eines der Schlüsselwerkzeuge für das Erstellen von Paketen ist makepkg (bereitgestellt von pacman), das Folgendes ausführt: Überprüft, ob Paketabhängigkeiten installiert sind. Lädt die Quelldateien von den angegebenen Servern herunter. Entpackt die Quelldatei (en). Kompiliert die Software und installiert sie unter einer fakeroot-Umgebung. Strips Symbole aus Binärdateien und Bibliotheken. Erzeugt die Paket-Metadatei, die in jedem Paket enthalten ist. Komprimiert die fakeroot-Umgebung in eine Paketdatei. Speichert die Paketdatei im konfigurierten Zielverzeichnis, das standardmäßig das aktuelle Arbeitsverzeichnis ist. Herunterladen und Testen der Installation Laden Sie den Quell-Tarball der zu verpackenden Software herunter, extrahieren Sie ihn und folgen Sie den Anweisungen der Autoren, um das Programm zu installieren. Notieren Sie alle Befehle und / oder Schritte, die zum Kompilieren und Installieren erforderlich sind. Diese Befehle werden in der PKGBUILD-Datei wiederholt. Die meisten Software-Autoren halten sich an den 3-Schritt-Build-Zyklus: Dies ist eine gute Zeit, um sicherzustellen, dass das Programm ordnungsgemäß funktioniert. Erstellen eines PKGBUILD Wenn Sie makepkg ausführen. Sucht es nach einer PKGBUILD-Datei im aktuellen Arbeitsverzeichnis. Wenn eine PKGBUILD-Datei gefunden wird, lädt sie den Software-Quellcode herunter und kompiliert sie entsprechend den Anweisungen in der PKGBUILD-Datei. Die Anweisungen müssen durch die Bash-Shell vollständig interpretierbar sein. Nach erfolgreichem Abschluss werden die resultierenden Binärdateien und Metadaten des Pakets, d. h. Paketversion und Abhängigkeiten, in eine Paketdatei pkgname. pkg. tar. xz gepackt, die mit pacman - U ltpackage filegt installiert werden kann. Um mit einem neuen Paket zu beginnen, sollten Sie zunächst ein leeres Arbeitsverzeichnis (vorzugsweise abs pkgname) erstellen, in dieses Verzeichnis wechseln und eine PKGBUILD-Datei erstellen. Sie können entweder den Prototyp PKGBUILD usr share pacman PKGBUILD. proto in Ihr Arbeitsverzeichnis kopieren oder einen PKGBUILD aus einem ähnlichen Paket kopieren. Letzteres kann nützlich sein, wenn Sie nur einige Optionen ändern müssen. Warnung: Verwenden Sie nur die im pacman-Paket (PKGBUILD-split. proto, PKGBUILD-vcs. proto und PKGBUILD. proto) enthaltenen PKGBUILD-Prototypen. Die Prototypen-Dateien im ABS-Paket und im ABS-Git-Repository sind deutlich veraltet und sollten nicht verwendet werden. Siehe FS34485. Definieren von PKGBUILD-Variablen Beispiel PKGBUILDs befinden sich in usr share pacman. Eine Erläuterung der möglichen PKGBUILD-Variablen finden Sie im PKGBUILD-Artikel. Makepkg definiert zwei Variablen, die Sie als Teil des Build - und Installationsprozesses verwenden sollten: srcdir Zeigt das Verzeichnis an, in dem makepkg alle Dateien im Quell-Array extrahiert oder verknüpft. Pkgdir Dies verweist auf das Verzeichnis, in dem makepkg das installierte Paket bündelt, das zum Stammverzeichnis Ihres Build-Pakets wird. Alle von ihnen enthalten absolute Pfade, dh Sie müssen sich nicht um Ihr Arbeitsverzeichnis kümmern, wenn Sie diese Variablen richtig verwenden. Hinweis: makepkg. Und somit die Funktionen build () und package () nicht interaktiv sein sollen. Interaktive Dienstprogramme oder Skripts, die in diesen Funktionen aufgerufen werden, können makepkg brechen. Vor allem, wenn es mit build-logging aktiviert (-L) aufgerufen wird. (Siehe FS13214.) Hinweis: Abgesehen von dem aktuellen Paket Maintainer, kann es vorherige Betreuer, die oben als Mitarbeiter. Funktionen von PKGBUILD Es gibt fünf Funktionen, die in der Reihenfolge aufgelistet sind, in der sie ausgeführt werden, wenn alle vorhanden sind. Wenn man nicht existiert, wird es einfach übersprungen. Hinweis: Dies gilt nicht für die package () - Funktion, wie sie in jedem PKGBUILD erforderlich ist. Mit pacman 4.1 können Sie die pkgver-Variable während eines makepkg aktualisieren. Pkgver () wird direkt ausgeführt, nachdem die Quellen geholt und extrahiert wurden. Dies ist besonders nützlich, wenn Sie machen git svn hg etc. Pakete. Wo der Buildprozess gleich bleibt, aber die Quelle kann jeden Tag aktualisiert werden, sogar jede Stunde. Die alte Weise, dies zu tun war, das Datum in das pkgver Feld zu setzen, das, wenn die Software nicht aktualisiert wurde, makepkg es noch umbauen würde es denken, dass die Version geändert hatte. Einige nützliche Befehle dafür sind git beschreiben. Hg identifizieren - ni. Etc. Bitte testen Sie diese, bevor Sie eine PKGBUILD einreichen, da ein Fehler in der Funktion pkgver () einen Build in seinen Tracks stoppen kann. Hinweis: pkgver darf keine Leerzeichen oder Bindestriche (-) enthalten. Mit sed zu korrigieren ist häufig. Pacman 4.1 führt die prepare () - Funktion ein. In dieser Funktion werden Befehle, die verwendet werden, um Quellen für den Aufbau vorzubereiten, wie Patching ausgeführt. Diese Funktion wird vor der Build-Funktion und nach der Paketentnahme ausgeführt. Wird die Extraktion übersprungen (makepkg - e), dann wird prepare () nicht ausgeführt. Hinweis: (Von Mann PKGBUILD) Die Funktion wird im bash - e-Modus ausgeführt, dh jeder Befehl, der mit einem Status ungleich Null verlässt, bewirkt, dass die Funktion beendet wird. Nun müssen Sie die build () - Funktion in der PKGBUILD-Datei implementieren. Diese Funktion verwendet allgemeine Shell-Befehle in Bash-Syntax, um automatisch Software zu kompilieren und ein pkg-Verzeichnis zu erstellen, um die Software zu installieren. Dies ermöglicht makepkg, Dateien zu paketieren, ohne das Dateisystem durchsuchen zu müssen. Der erste Schritt in der build () - Funktion besteht darin, in das Verzeichnis zu wechseln, das durch das Dekomprimieren des Quell-Tarballs erzeugt wird. Makepkg ändert das aktuelle Verzeichnis zu srcdir, bevor die build () - Funktion ausgeführt wird. Daher in den meisten Fällen, wie in usr vorgeschlagen pacman PKGBUILD. proto. Wird der erste Befehl wie folgt aussehen: Nun müssen Sie die gleichen Befehle auflisten, die Sie bei der manuellen Kompilierung der Software verwendet haben. Die build () Funktion im Wesentlichen automatisiert alles, was Sie von Hand gemacht haben, und kompiliert die Software in der fakeroot Buildumgebung. Wenn die Software, die Sie verpacken, ein configure Index benutzt, ist es gute Praxis, - prefix usr zu verwenden, wenn man Pakete für pacman herstellt. Viele Software-Installationen Dateien im Vergleich zu den usr lokalen Verzeichnis, das sollte nur getan werden, wenn Sie manuell aus der Quelle zu bauen. Alle Arch Linux-Pakete sollten das usr-Verzeichnis verwenden. Wie die usr share pacman PKGBUILD. proto-Datei sehen, sehen die nächsten beiden Zeilen oft so aus: Anmerkung: Wenn Ihre Software nichts bauen muss, verwenden Sie die build () Funktion NICHT. Die build () - Funktion ist nicht erforderlich, aber die package () - Funktion ist. Platz für Anrufe zu überprüfen und ähnliche Prüfroutinen. Es wird dringend empfohlen, check (), da es hilft, um sicherzustellen, dass die Software korrekt gebaut wurde und funktioniert gut mit seinen Abhängigkeiten. Benutzer, die es nicht benötigen (und gelegentlich Betreuer, die nicht ein Paket für diese passieren kann) kann deaktivieren Sie es mit BUILDENV (überprüfen) in PKGBUILD makepkg. conf oder rufen makepkg mit --nocheck Flagge. Der letzte Schritt besteht darin, die kompilierten Dateien in ein Verzeichnis zu legen, in dem makepkg sie abrufen kann, um ein Paket zu erstellen. Dies ist standardmäßig die pkg directorya simple fakeroot Umgebung. Das pkg-Verzeichnis repliziert die Hierarchie des Root-Dateisystems der Software-Installationspfade. Wenn Sie Dateien manuell unter dem Stammverzeichnis Ihres Dateisystems platzieren müssen, sollten Sie sie im pkg-Verzeichnis unter derselben Verzeichnisstruktur installieren. Zum Beispiel, wenn Sie eine Datei in usr bin installieren möchten. Sollte es stattdessen unter pkgdir usr bin platziert werden. Sehr wenige Installationsverfahren erfordern den Benutzer, Dutzende von Dateien manuell zu kopieren. Stattdessen für die meisten Software, rufen make install tun dies. Die letzte Zeile sollte wie folgt aussehen, um die Software korrekt im pkg-Verzeichnis zu installieren: Hinweis: Es ist manchmal der Fall, wenn DESTDIR nicht im Makefile verwendet wird, müssen Sie stattdessen das Präfix verwenden. Wenn das Paket mit autoconf automake gebaut wird. Verwenden Sie DESTDIR, was in den Handbüchern dokumentiert ist. Wenn DESTDIR nicht funktioniert, versuchen Sie es mit prefixpkgdir usr install. Wenn das nicht funktioniert, müssen Sie weiter in die Installationsbefehle suchen, die von make lt ausgeführt werden. Gt installieren. In einigen ungeraden Fällen erwartet die Software von einem einzigen Verzeichnis ausgeführt werden. In solchen Fällen ist es ratsam, diese einfach in pkgdir opt zu kopieren. Mehr als oft wird der Installationsvorgang der Software Unterverzeichnisse unterhalb des pkg-Verzeichnisses erstellen. Wenn dies nicht der Fall ist, erzeugt makepkg viele Fehler, und Sie müssen Unterverzeichnisse manuell erstellen, indem Sie die entsprechenden mkdir - p-Befehle in der build () - Funktion hinzufügen, bevor der Installationsvorgang ausgeführt wird. In alten Paketen gab es keine package () - Funktion. Also wurden Dateien in das pkg-Verzeichnis am Ende der build () - Funktion gesetzt. Wenn package () nicht vorhanden ist, wird build () über fakeroot ausgeführt. In neuen Paketen ist package () erforderlich und läuft stattdessen über fakeroot und build () läuft ohne spezielle Berechtigungen. Makepkg --repackage führt nur die package () - Funktion aus, so dass es eine. pkg erzeugt. Datei, ohne das Paket zu kompilieren. Dies kann Zeit sparen, z. B. Wenn Sie nur die abhängige Variable des Pakets geändert haben. Hinweis: Die Funktion package () ist die einzige erforderliche Funktion in einem PKGBUILD. Wenn Sie nur Dateien in ihre jeweiligen Verzeichnisse kopieren müssen, um ein Programm zu installieren, legen Sie es nicht in die build () - Funktion, setzen Sie das in die package () - Funktion. Hinweis: Das Erstellen von Symlinks ist ein etwas umständliches Verfahren in der package () - Funktion. Die Verwendung des naiven Ansatzes ln - s von foo nach goo führt zu einem gebrochenen Symlink zum Build-Verzeichnis. Der Weg, einen richtigen Link zu erstellen, besteht darin, dass er auf eine ursprünglich gebrochene Quelle, ln - s von foo auf goo, hinweist. Sobald das Paket installiert ist, wird der Link auf die richtige Stelle zeigen. Testen von PKGBUILD und Paket Da Sie die build () - Funktion schreiben, sollten Sie Ihre Änderungen häufig testen, um sicherzustellen, dass es keine Bugs gibt. Sie können dies mit dem Befehl makepkg im Verzeichnis mit der PKGBUILD-Datei tun. Mit einem richtig formatierten PKGBUILD. Makepkg wird ein Paket mit einem gebrochenen oder unvollendeten PKGBUILD erstellen. Wird es einen Fehler aufwerfen. Wenn makepkg erfolgreich abgeschlossen wird, platziert es eine Datei namens pkgname-pkgver. pkg. tar. xz in Ihrem Arbeitsverzeichnis. Dieses Paket kann mit dem Befehl pacman - U installiert werden. Allerdings, nur weil eine Paketdatei erstellt wurde bedeutet nicht, dass es voll funktionsfähig ist. Es könnte denkbar nur das Verzeichnis und keine Dateien enthalten, wenn z. B. ein Präfix unsachgemäß angegeben wurde. Sie können pacmans-Abfrage-Funktionen verwenden, um eine Liste der im Paket enthaltenen Dateien und die Abhängigkeiten anzuzeigen, die mit pacman - Qlp-Paketdatei und pacman - Qip-Paketdatei erforderlich sind. Wenn das Paket ordnungsgemäß aussieht, sind Sie fertig. Wenn Sie jedoch die Freigabe der PKGBUILD-Datei planen, ist es zwingend erforderlich, dass Sie den Inhalt des abhängigen Arrays überprüfen und überprüfen. Stellen Sie außerdem sicher, dass die Paket-Binaries tatsächlich einwandfrei laufen. Es ist ärgerlich, ein Paket freizugeben, das alle notwendigen Dateien enthält, aber aufgrund einer obskuren Konfigurationsoption abstürzt, die mit dem Rest des Systems nicht ganz gut funktioniert. Wenn Sie nur Pakete für Ihr eigenes System zu kompilieren, aber müssen Sie nicht zu viel über diesen Qualitätssicherungs-Schritt zu kümmern, da Sie die einzige Person, die unter Fehlern leiden, nachdem alle sind. Überprüfen der Paketverfügbarkeit Prüfen Sie nach dem Testen der Paketfunktionalität auf Fehler mit namcap. Prüfen Sie die PKGBUILD-Inhalte auf häufige Fehler und die Paketdateihierarchie auf unnötige fehlerhafte Dateien. Scannen Sie alle ELF-Dateien im Paket mit ldd. Automatische Berichte, welche Pakete mit den benötigten gemeinsamen Bibliotheken fehlen, hängt davon ab und kann als transitive Abhängigkeiten ausgelassen werden Heuristisch nach fehlenden und redundanten Abhängigkeiten suchen und vieles mehr. Holen Sie sich in die Gewohnheit der Überprüfung Ihrer Pakete mit namcap zu vermeiden, um die einfachsten Fehler nach Paket Vorlage zu beheben. Übermittlung von Paketen an die AUR Bitte lesen Sie AUR User GuidelinesSendung von Paketen für eine detaillierte Beschreibung des Einreichungsprozesses. Laden Sie das Quell-Tarball der Software, die Sie verpacken möchten, herunter. Versuchen Sie, das Paket zu kompilieren und es in ein beliebiges Verzeichnis zu installieren. Kopieren Sie über den Prototyp usr share pacman PKGBUILD. proto und benennen Sie es in PKGBUILD in einem temporären Arbeitsverzeichnis um - vorzugsweise abs. Bearbeiten Sie den PKGBUILD entsprechend den Anforderungen Ihres Pakets. Führen Sie makepkg aus und sehen Sie, ob das resultierende Paket korrekt erstellt wurde. Wenn nicht, wiederholen Sie die letzten beiden Schritte. Bevor Sie den Paket-Building-Prozess automatisieren können, sollten Sie es manuell mindestens einmal durchgeführt haben, es sei denn, Sie wissen genau, was Sie im Voraus tun. In diesem Fall würden Sie nicht lesen dies in den ersten Platz. Leider, obwohl eine gute Reihe von Programm-Autoren an den 3-Schritt-Build-Zyklus zu halten. Configure machen make install, das ist nicht immer der Fall, und die Dinge können echt hässlich, wenn Sie Patches anwenden müssen, um alles zu arbeiten. Faustregel: Wenn Sie das Programm nicht aus dem Quell-Tarball zu kompilieren und es zu einem definierten, temporären Unterverzeichnis installieren können, müssen Sie nicht einmal versuchen, es zu verpacken. Es gibt keine magischen Pixie Staub in makepkg, dass Quellprobleme gehen weg. In einigen Fällen sind die Pakete nicht einmal als Quelle verfügbar und Sie müssen etwas wie sh installer. run verwenden, um es zu funktionieren. Sie müssen eine Menge Forschung (lesen Sie READMEs, INSTALL-Anweisungen, man-Seiten, vielleicht ebuilds von Gentoo oder andere Paket-Installateure, möglicherweise sogar die MAKEFILEs oder Quellcode), um es funktionieren zu tun. In einigen wirklich schlechten Fällen müssen Sie die Quelldateien bearbeiten, damit es überhaupt funktioniert. Jedoch muss makepkg vollständig autonom sein, ohne Benutzereingaben. Wenn Sie also die Makefiles bearbeiten müssen, müssen Sie möglicherweise ein benutzerdefiniertes Patch mit dem PKGBUILD bündeln und es aus der prepare () - Funktion heraus installieren, oder Sie müssen einige sed-Befehle aus der prepare () - Funktion herausgeben. Detailliertere Richtlinien Richtlinien zur Paketerstellung

No comments:

Post a Comment