So bauen Sie ein Paket mit dem Arch Linux Build -System wieder auf

So bauen Sie ein Paket mit dem Arch Linux Build -System wieder auf

Der Abs oder Bogenbausystem Ist ein Paketbuilding -System, das in der Arch Linux -Distribution nativ ist: Damit können wir einfach Pakete erstellen, die mit installiert werden können Pacman, Der Vertriebspaketmanager beginnend mit dem Quellcode. Alles, was wir tun müssen, ist, Anweisungen in a anzugeben Pkgbuild Datei und dann das Paket mit dem erstellen MAKEPKG Werkzeug. In diesem Tutorial sehen wir, wie Sie ein bereits vorhandenes Paket anpassen und wieder aufbauen können.

In diesem Tutorial lernen Sie:

  • Was ist das Bogenbausystem?
  • So herunterladen Sie ein vorhandenes Paketquelldateien
  • So modifizieren Sie ein PKGBuild
  • So erstellen Sie ein Paket mit dem MAKEPKG Dienstprogramm

Softwareanforderungen und Konventionen verwendet

Softwareanforderungen und Linux -Befehlszeilenkonventionen
Kategorie Anforderungen, Konventionen oder Softwareversion verwendet
System Arch Linux
Software ASP, Makepkg, Base-Devel
Andere Root -Berechtigungen zur Installation von Build- und Laufzeitabhängigkeiten
Konventionen # - erfordert, dass gegebene Linux -Befehle mit Root -Berechtigungen entweder direkt als Stammbenutzer oder mit Verwendung von ausgeführt werden können sudo Befehl
$ - Erfordert, dass die angegebenen Linux-Befehle als regelmäßiger nicht privilegierter Benutzer ausgeführt werden können

Ein Paket wieder aufbauen

Als Beispiel für dieses Tutorial werden wir die wieder aufbauen HPLIP Paket. Dieses Paket enthält die Open -Source -Software, die für die Verwendung einiger HP -Drucker unter Linux erforderlich ist. Bei Verteilungen wie Debian und Fedora haben wir die Wahl, die zu installieren HPLIP Paket, das nur Befehlszeilen -Dienstprogramme und -Treiber enthält, und optional optional HPLIP-GUI, Dazu gehören auch grafische Tools, mit denen der Drucker eingerichtet und gesteuert werden kann. Da benutze ich das System-Konfigurationspartner Tool zur Steuerung vorhandener Drucker und ich möchte nicht über unnötige und überlappende Tools in meinem System verfügen. Ich muss ändern, wie die Software auf Arch Linux erstellt und verpackt wird: Dies ist, was wir in diesem Tutorial tun werden.

Software Installation

Als erster Schritt müssen wir einige Pakete installieren: Basis Und ASP. Die erste ist eine Paketgruppe, die viele wesentliche Dienstprogramme enthält, um Software zu kompilieren wie Fakeroot, GCC Und machen. Das zweite ist ein Tool, mit dem Quelldateien für vorhandene Arch -Linux -Pakete abgerufen werden können. Um sie zu installieren, verwenden wir Pacman:

$ sudo pacman -s base -devel ASP 

Wie bereits erwähnt, werden wir auch die brauchen MAKEPKG das ist bereits installiert, da es mit geliefert wird Pacman selbst. Sobald wir alle benötigten Pakete installiert haben, können wir mit dem fortfahren MAKEPKG Aufbau.

MAKEPKG -Konfiguration

Der Standard, systemweit MAKEPKG Konfigurationsdatei ist /etc/makepkg.Conf; Wir werden dies kopieren ~/.MAKEPKG.Conf, Um eine benutzerspezifische Konfiguration zu erstellen, können wir optimieren, ohne die Verwaltungsberechtigte zu verwenden (~/.config/pacman/makepkg.Conf könnte auch verwendet werden). Einige spürbare Variablen, die man in der Datei möglicherweise optimieren möchte, sind Folgendes:

Variable Verwenden Standardwert
CPPFlags Die Flaggen, die für die C -Präprozessoren verwendet werden sollen -D_fortify_source = 2
CFLAGs Die Flaggen, die für den C -Compiler verwendet werden sollen -März = x86-64 -mtune = generic -o2 -pipe -fno -plt
Cxxflags Die für den C ++ - Compiler zu verwendenden Flags -März = x86-64 -mtune = generic -02 -Pipe -fno -plt
Builddir Das Verzeichnis, das für das Verpackungsaufbau verwendet werden soll /tmp/makepkg
Integrity_Check Die zu verwendende Integritätsprüfung MD5
PKGDEST Das Verzeichnis, in dem alle Pakete platziert werden . (Arbeitsverzeichnis)
Srcdest Das Verzeichnis, in dem Quelldaten gespeichert werden ./src

Sobald wir unsere Konfiguration so optimiert haben, dass wir unsere Anforderungen besser erfüllen, können wir die Quelldateien für das Arch Linux -Paket, das wir ändern möchten, HPLIP.

Herunterladen der Paketquelldateien

Um die Quelldateien für das Paket herunterzuladen, das wir ändern möchten, müssen wir die verwenden ASP Werkzeug, das wir zuvor installiert haben. In diesem Fall rennen wir:

$ ASP Checkout HPLIP 


Nach wenigen Sekunden die HPLIP Verzeichnis sollte in unserem Arbeitsverzeichnis erstellt werden. Innerhalb davon werden wir zwei Unterverzeichnisse finden: Repos die eigene Unterverzeichnisse enthält, benannt nach dem Namen der Repository -Namen und der Systemarchitektur, und Stamm, die die Hauptentwicklungslinie der enthält Svn Repository.

HPLIP/ ├── Repos │ └── extra-x86_64 │ ├── 0022-add-include-Cups-PPD.H-in-Varian-Places-as-Cups-2.2.Patch │ ├── 0023-fix.py.Patch │ ├── 0025-Remove-All-ImageProcessor-Funktionalität-die Is-Clo.Patch │ ├── Disable_Upgrade.Patch │ ├── Hplip-Revert-Plugins.Patch │ ├── pkgbuild │ ├── Python3.diff │ └── reproduzierbare Gzip.Patch └── Koffer.H-in-Varian-Places-as-Cups-2.2.Patch ├── 0023-Fix-Handling von Unicode-FileNames-In-Sixext.py.Patch ├── 0025-Remove-All-ImageProcessor-Funktionalität-die is-clo.Patch ├── Disable_Upgrade.Patch ├── HPLIP-Revert-Plugins.Patch ├── pkgbuild ├── Python3.Diff └── Reproduzierbar-Gzip.Patch 

Wir können die ändern HPLIP/Repos/Extra-X86_64/Pkgbuild Datei.

Ändern der PKGBUILD -Datei

Der Pkgbuild Die Datei ist ein Bash -Skript, das den Gebäudeanweis für das Arch Linux -Paket enthält. In diesem Fall müssen wir in der Datei geändert werden, der Inhalt der bauen Funktion, die die Befehle enthält, die zum Konfigurieren und Kompilieren der Quelldateien in diesem Fall verwendet werden HPLIP. In der Funktion können wir sehen, dass die ./konfigurieren Das Skript wird mit den folgenden Flags gestartet:

[…] ./configure -prefix =/usr \ --enable-qt5 \-disable-qt4 \ --enable-hpcups-install \-Enable-Cups-DRV-Install \ --enable-PPP-BUILD […] 

Da ich nicht möchte, dass grafische Anwendungen erstellt werden und ich das Minimum installieren möchte --aktivieren-qt5 Option (ich könnte verwenden --deaktivieren-qt5 oder --aktivieren-qt5 = Nr Stattdessen wäre dies jedoch überflüssig, da das Flag standardmäßig deaktiviert ist, wie wir durch Start lesen können ./Konfigurieren -HELP im HPLIP -Quellverzeichnis). Ich muss dann das verwenden --deaktivieren-gui-build Flagge, um die GUI -Erstellung zu deaktivieren und die zu verwenden --Aktivieren Sie die Lite-Build Flag, um einen Lite -Build mit nur den erforderlichen Komponenten zum Erstellen und Scannen zu erhalten (der Drucker enthält auch einen Scanner). Das Endergebnis wäre so etwas wie:

[…] ./configure -prefix =/usr \-disable-qt4 \ --enable-hpcups-install \ --enable-cups-drv-install \ --enable-pp-build \--disable-gui-build \- -Nable-Lite-Build […] 


Da wir deaktiviert sind Qt5 Unterstützung können wir auch entfernen Python-Pyqt5 Aus der Liste der Abhängigkeiten, die zum Erstellen der Software erforderlich sind, sind in der aufgeführt MakedPends Bash -Array online 15 der Datei:

MakedEpends = ('Python-Pyqt5 "Sane" RPCBind "Cups" libusb') 

Jetzt, wo wir das modifiziert haben Pkgbuild, Wir können mit dem nächsten Schritt fortfahren und unser Paket mithilfe mithilfe erstellen MAKEPKG.

Erstellen Sie das Paket

Einmal unser Pkgbuild Die Datei ist fertig, wir können unser geänderter Paket mit dem erstellen MAKEPKG Dienstprogramm. Bevor wir es tun, müssen wir eine andere Sache benötigen: Da die Signatur der heruntergeladenen Quelldateien für die Software, die wir erstellen möchten, automatisch mit einem GPG -Schlüssel überprüft werden, müssen wir den Schlüssel zu unserem GPG -Schlüsselring ansonsten überprüft, andernfalls wird der Build -Prozess fehlschlagen. In diesem Fall, um den Schlüssel zu importieren, würden wir ausführen:

$ gpg -Keyserver Keyserver.Ubuntu.com --Recv 73d770cda59047b9 

Wir sollten mitgeteilt werden, dass der Schlüssel erfolgreich importiert wurde:

GPG: KEY 73D770CDA59047B9: Public Key "HPLIP (HP Linux -Bildgebung und Druck)" Importiert GPG: Gesamtzahl verarbeitet: 1 GPG: Importiert: 1 

Der Schlüssel, der von identifiziert wurde durch 73D770CDA59047B9 ist der Schlüssel, mit dem das signiert wird HPLIP Quelle Tarball. Wenn Sie mehr über die Überprüfung einer GPG.

Sobald wir fertig sind, bewegen wir uns in das Verzeichnis, wo die Pkgbuild wird gelagert
und führen Sie den folgenden Befehl aus:

$ MAKEPKG -CLEAN --Synchronisation -RMDEPS 

Schauen wir uns einen kurzen Blick auf die Optionen, die wir verwenden, um die zu rufen MAKEPKG Werkzeug. Mit dem --sauber Möglichkeit (-C) Wir können so machen, dass übrig gebliebene Dateien und Verzeichnisse nach einem erfolgreichen Paketaufbau entfernt werden. Wir haben auch benutzt --Synchronisation (-Sauch Pacman. Schließlich haben wir die benutzt --rmdeps Möglichkeit (-R): Dies führt dazu, dass die zuvor installierten Abhängigkeiten nach Abschluss des Builds deinstalliert werden.

Wenn wir bereits einen Aufbau des Pakets durchgeführt haben und den Prozess erneut ausführen möchten, müssen wir auch die verwenden --Gewalt (-F) Option, seitdem MAKEPKG Normalerweise weigert sich, ein Paket zu erstellen, das bereits im selben Verzeichnis besteht).

Sobald wir den obigen Befehl gestartet haben, beginnt die Zusammenstellung der Quelldateien und die Erstellung des Pakets. Wir werden gebeten zu bestätigen, dass wir die fehlenden Abhängigkeiten installieren möchten:

==> Paket machen: HPLIP 1: 3.20.6-2 (aus 18 Aug 2020 10:29:43 CEEST) ==> Überprüfung der Laufzeitabhängigkeiten… ==> Fehlende Abhängigkeiten installieren… [sudo] Passwort für EGDOC: Auflösen von Abhängigkeiten… Suche nach widersprüchlichen Paketen… Pakete (18) JBIG2DEC -0.18-1 Libidn-1.36-1 Perl-Alien-Build-2.29-1 Perl-Alien-libxml2-0.16-2 Perl-Capture-Tiny-0.48-4 Perl-Clone-0.45-2 Perl-DBI-1.643-2 Perl-FF-Checklib-0.27-2 Perl-File-Chdir-0.1011-4 Perl-File-1-1.23-4 Perl-Path-Tiny-0.112-2 Perl-XML-libxml-2.0205-2 Perl-XML-NamesPacesupport-1.12-4 Perl-XML-SAX-1.02-1 Perl-XML-Sax-Base-1.09-4 Foomatic-DB-Engine-4: 20200206-1 Ghostscript-9.52-1 Net-SNMP-5.8-6 Gesamt installierte Größe: 61.76 MIB :: Fahren Sie mit der Installation fort? [Y/n] y […] ==> Überprüfung von BuildTime-Abhängigkeiten… ==> Fehlende Abhängigkeiten installieren… Abhängigkeiten auflösen… nach widersprüchlichen Paketen aufsuchen… Pakete (6) GD-2.3.0-1 libgphoto2-2.5.25-1 libieee1284-0.2.11-9 libxpm-3.5.13-2 RPCBind-1.2.5-3 SANE-1.0.30-1 Gesamtgröße installiert: 26.50 MIB :: Fahren Sie mit der Installation fort? [Y/n] y […] 

Sobald der Build abgeschlossen ist, werden wir gebeten, zu bestätigen, dass wir die zuvor installierten Pakete entfernen möchten. Wenn alles wie erwartet verlief, sollten wir das im Verzeichnis erstellte Paket finden, mit dem wir in der angegeben wurden MAKEPKG Konfigurationsdatei (die PKGDEST Verzeichnis). Standardmäßig wird das Paket im Arbeitsverzeichnis erstellt. In diesem Fall die HPLIP-1: 3.20.6-2-X86_64.pkg.Teer.ZST Paket wurde generiert; Wir können es mit verwenden Pacman:

$ sudo pacman -u hplip -1: 3.20.6-2-X86_64.pkg.Teer.ZST 


Behandeln Sie Konflikte mit System -Upgrades

Da wir ein benutzerdefiniertes Paket erstellt haben, das auf der Änderung basiert, die wir in der vorgenommen haben Pkgbuild Datei entsteht ein Problem: Wenn das System aktualisiert wird, kann eine neue Version des Standardpakets installiert werden, wodurch die von uns vorgenommenen Änderungen überschreiben. Wie wir das vermeiden können? Die einfachere Lösung besteht darin, die Pakete zu erstellen, die wir das Mitglied einer bestimmten Gruppe ändern (sagen wir, wir möchten sie „modifiziert“ nennen) und dann anweisen Pacman Um nicht die Mitglieder zu verbessern. Um dies zu tun, müssen wir die ändern Pkgbuild Wieder und fügen Sie diese Zeile hinzu:

Gruppen = ('modifiziert') 

Zu diesem Zeitpunkt müssen wir das Paket wieder aufbauen. Sobald wir fertig sind, müssen wir die ändern /etc/pacman.Conf Datei und fügen Sie die Gruppe der Liste der ignorierten hinzu. Die zu änderne Zeile ist 26:

IgnorGroup = modifiziert 

Der Pacman Der Paketmanager überspringt das Upgrade des Pakets, daher müssen wir es bei Bedarf manuell tun.

Schlussfolgerungen

In diesem Artikel haben wir gesehen, wie wir verwenden können Abs, Das Bogen-Build-System zum Modifizieren und Umbau eines vorhandenen Pakets, um es auf unsere spezifischen Anforderungen zuzuordnen. Wir haben gesehen, wie man ein Paketquelldateien herunterlädt, wie man a modifiziert Pkgbuild, und wie Sie das Paket mit dem neu aufbauen MAKEPKG Dienstprogramm. Um das Thema besser zu erkunden, können Sie sich das ansehen MAKEPKG Manpage und konsultieren.

Verwandte Linux -Tutorials:

  • Dinge zu installieren auf Ubuntu 20.04
  • Dinge zu tun nach der Installation Ubuntu 20.04 fokale Fossa Linux
  • Linux -Konfigurationsdateien: Top 30 am wichtigsten
  • Eine Einführung in Linux -Automatisierung, Tools und Techniken
  • Kann Linux Viren bekommen?? Erforschung der Verwundbarkeit von Linux…
  • Dinge zu tun nach der Installation Ubuntu 22.04 Jammy Quallen…
  • Hung Linux System? Wie man zur Befehlszeile entkommt und…
  • Installieren Sie Arch Linux in VMware Workstation
  • Linux -Download
  • Mint 20: Besser als Ubuntu und Microsoft Windows?