So erstellen Sie ein GNU Hello World-RPM-Paket in Fedora
.rpm
ist ein Dateiformat.In diesem Artikel erklären wir das Schreiben von RPM-Dateien und zeigen, wie Sie auf einfache Weise einfache Quell- und Binärsoftwarepakete erstellen können, z. GNU “Hallo Welt” RPM-Paket in Fedora Linux Verteilung. Wir gehen davon aus, dass Sie über grundlegende Kenntnisse der vorgefertigten RPM-Pakete und des Erstellungsprozesses der Free Open Source-Software verfügen.
Installieren Sie die Entwicklungstools in Fedora
Beginnen wir mit der Einrichtung der Entwicklungsumgebung in Fedora Linux Führen Sie den folgenden Befehl aus, um die erforderlichen Tools zum Erstellen von RPMs zu installieren.
$ sudo dnf install fedora-packager @development-tools
Fügen Sie als Nächstes Ihr nicht privilegiertes Konto zu ‘spotten‘wie folgt gruppieren (ersetzen tecmint mit Ihrem tatsächlichen Benutzernamen). Auf diese Weise können Sie die Erstellungsprozedur in einer sauberen Chroot testen.
$ sudo usermod -a -G mock tecmint
Erstellen Sie jetzt einen RPM-Build in Ihrem ~/rpmbuild
Verzeichnis und überprüfen Sie den Build mit den folgenden Befehlen. Es wird eine Liste von Unterverzeichnissen angezeigt, die Projektquellcode, RPM-Konfigurationsdateien und Binärpakete enthält.
$ rpmdev-setuptree $ tree ~/rpmbuild/
Hier ist, wofür jedes Verzeichnis gedacht ist:
- BAUEN – speichert verschiedene% buildroot-Verzeichnisse, wenn Pakete erstellt werden.
- RPMS – enthält binäre RPMs in Unterverzeichnissen der Architektur.
- QUELLEN – speichert komprimierte Quellarchive und alle Patches. Hier sucht der Befehl rpmbuild nach ihnen.
- TECHNISCHE DATEN – speichert die SPEC-Dateien.
- SRPMS – speichert die Quelldrehzahl anstelle einer binären Drehzahl.
Erstellen einer “Hello World” -Drehzahl
In diesem Schritt müssen Sie den Quellcode herunterladen (auch bekannt als „UpstreamQuelle des Hello World-Projekts, das wir verpacken, in die ~ / rpmbuild / SOURCE Verzeichnis mit dem folgenden Befehl wget.
$ cd ~/rpmbuild/SOURCES $ wget http://ftp.gnu.org/gnu/hello/hello-2.10.tar.gz -P ~/rpmbuild/SOURCES
Als nächstes konfigurieren wir das RPM-Paket mit a .spec
Datei (nennen wir es hello.spec
in diesem Fall) in der ~ / rpmbuild / SPECS Verzeichnis mit dem rpmdev-Zeitung Programm.
$ cd ~/rpmbuild/SPECS $ rpmdev-newspec hello $ ls
Dann öffnen Sie die hello.spec
Datei mit Ihrem Lieblingseditor.
$ vim hello.spec
Die Standardvorlage sollte folgendermaßen aussehen:
Name: hello Version: Release: 1%{?dist} Summary: License: URL: Source0: BuildRequires: Requires: %description %prep %autosetup %build %configure %make_build %install rm -rf $RPM_BUILD_ROOT %make_install %files %license add-license-file-here %doc add-docs-here %changelog * Tue May 28 2019 Aaron Kili
Lassen Sie uns kurz die Standardparameter in a erklären .spec
Datei:
- Name – wird verwendet, um einen Namen für das Paket festzulegen.
- Ausführung – sollte stromaufwärts spiegeln.
- Freisetzung – Zahlen, die Sie in Fedora arbeiten.
- Zusammenfassung – ist eine kurze einzeilige Beschreibung des Pakets. Der erste Buchstabe sollte in Großbuchstaben geschrieben werden, um Beschwerden über RPMLint zu vermeiden.
- Lizenz – Überprüfen Sie den Lizenzstatus der Software, indem Sie die Quelldateien und / oder deren LIZENZDATEIEN überprüfen und / oder mit den Autoren sprechen.
- URL – Gibt die Homepage des Softwarepakets an.
- Source0 – Gibt die Quelldateien an. Dies kann eine direkte URL oder ein Pfad des komprimierten Quellcodes der Software sein.
- BuildRequires – Gibt die Abhängigkeiten an, die zum Erstellen der Software erforderlich sind.
- Benötigt – Gibt die Abhängigkeiten an, die zum Ausführen der Software erforderlich sind.
- % prep – wird verwendet, um die Umgebung zum Erstellen des RPM-Pakets zu erstellen.
- %bauen – wird zum Kompilieren und Erstellen der Quellcodes verwendet.
- %Installieren – Hiermit werden die Programme installiert. Es listet die Befehle auf, die zum Kopieren der resultierenden Datei aus dem Erstellungsprozess in das BUILDROOT-Verzeichnis erforderlich sind.
- % Dateien – In diesem Abschnitt werden die vom Paket bereitgestellten Dateien aufgelistet, die auf dem System installiert werden.
-
%Änderungsprotokoll – sollte die Arbeit zur Vorbereitung des RPM speichern, insbesondere wenn Sicherheits- und Fehler-Patches über der Basis-Upstream-Quelle enthalten sind. Es wird automatisch beim Erstellen der Datei hello.spec generiert. Die Änderungsprotokolldaten werden normalerweise von angezeigt
rpm --changelog -q
.
Bearbeiten Sie nun Ihre .spec
Datei und ändern Sie wie gezeigt.
Name: hello Version: 2.10 Release: 1%{?dist} Summary: The "Hello World" program from GNU License: GPLv3+ URL: http://ftp.gnu.org/gnu/%{name} Source0: http://ftp.gnu.org/gnu/%{name}/%{name}-%{version}.tar.gz BuildRequires: gettext Requires(post): info Requires(preun): info %description The "Hello World" program package %prep %autosetup %build %configure make %{make_build} %install %make_install %find_lang %{name} rm -f %{buildroot}/%{_infodir}/dir %post /sbin/install-info %{_infodir}/%{name}.info %{_infodir}/dir || : %preun if [ $1 = 0 ] ; then /sbin/install-info --delete %{_infodir}/%{name}.info %{_infodir}/dir || : fi %files -f %{name}.lang %{_mandir}/man1/hello.1.* %{_infodir}/hello.info.* %{_bindir}/hello %doc AUTHORS ChangeLog NEWS README THANKS TODO %license COPYING %changelog * Tue May 28 2019 Aaron Kili
Sie werden feststellen, dass wir in der obigen Datei einige neue Parameter verwendet haben, die nicht erläutert wurden. Diese nennt man Makros, wird verwendet, um von RPM definierte Systemaufrufe zu erstellen, um Installationspfade für Pakete festzulegen. Daher ist es normalerweise vorzuziehen, diese Pfade auch nicht in Spezifikationsdateien fest zu codieren, sondern aus Gründen der Konsistenz dieselben Makros zu verwenden.
Im Folgenden sind RPM-Build- und Verzeichnismakros mit ihren Definitionen und Standardwerten aufgeführt:
- % {make_build} – wird in der verwendet %bauen In einem Abschnitt der Spezifikationsdatei wird der Befehl make ausgeführt.
- %{Name} – Definiert den Paket- oder Verzeichnisnamen.
- % {buildroot} -% {_ buildrootdir} /% {name} -% {version} -% {release}.% {_ Arch}, wie $ BUILDROOT
- % {_ infodir} -% {_ datarootdir} / info, Standard: / usr / share / info
- % {_ mandir} -% {_ datarootdir} / man, Standard: / usr / share / man
- %} {_ Gestoßen -% {_ exec_prefix} / bin, Standard: / usr / bin
Beachten Sie, dass Sie die Werte für diese finden können Makros in dem / usr / lib / rpm / platform / * / makros oder beziehen sich auf Verpackungsrichtlinien: RPM-Makros.
Erstellen des RPM-Pakets
Führen Sie den folgenden Befehl rpmbuild aus, um die Quell-, Binär- und Debugging-Pakete zu erstellen.
$ rpmbuild -ba hello.spec
Nach dem Erstellungsprozess werden die Quell-RPMs und die binären RPMs im erstellt ../SRPMS/
und ../RPMS/
Verzeichnisse jeweils. Mit dem Programm rpmlint können Sie überprüfen, ob die erstellte Spezifikationsdatei und die erstellten RPM-Dateien den RPM-Entwurfsregeln entsprechen:
$ rpmlint hello.spec ../SRPMS/hello* ../RPMS/*/hello*
Wenn es Fehler gibt, wie im obigen Screenshot gezeigt, beheben Sie diese, bevor Sie fortfahren können.
Zu guter Letzt verwenden Scheinprogramm um zu überprüfen, ob die Paketerstellung in der eingeschränkten Fedora-Build-Umgebung erfolgreich ist.
$ mock --verbose ../SRPMS/hello-2.10-1.fc29.src.rpm
Weitere Informationen finden Sie in der Fedora-Dokumentation: Erstellen von RPM-Paketen.
Das ist alles! In diesem Artikel haben wir erklärt, wie Sie Ihr Fedora-System erweitern, um ein einfaches Quell- und Binärsoftwarepaket zu erstellen. Wir haben auch gezeigt, wie ein GUN Hello Word-RPM-Paket erstellt wird. Verwenden Sie das unten stehende Feedback-Formular, um uns bei Fragen oder Kommentaren zu erreichen.