So erstellen Sie ein GNU Hello World-RPM-Paket in Fedora

RPM (ein rekursives Akronym für RPM Package Manager) ist ein kostenloses Open-Source-Paketverwaltungssystem für Linux. Obwohl es ursprünglich für die Verwendung in erstellt wurde Red Hat Linux, jetzt wird es in vielen Linux-Distributionen wie z CentOS, Fedora, und OpenSuse. Wichtig ist, dass sich der Name RPM auf das Paketmanagerprogramm und das bezieht .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
Installieren Sie die Entwicklungstools in Fedora
Installieren Sie die Entwicklungstools in Fedora

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/
Build-Umgebung erstellen
Build-Umgebung erstellen


Hier ist, wofür jedes Verzeichnis gedacht ist:

  1. BAUEN – speichert verschiedene% buildroot-Verzeichnisse, wenn Pakete erstellt werden.
  2. RPMS – enthält binäre RPMs in Unterverzeichnissen der Architektur.
  3. QUELLEN – speichert komprimierte Quellarchive und alle Patches. Hier sucht der Befehl rpmbuild nach ihnen.
  4. TECHNISCHE DATEN – speichert die SPEC-Dateien.
  5. 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
Erstellen Sie eine Hello Spec-Datei
Erstellen Sie eine Hello Spec-Datei

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*
Überprüfen Sie die Pakete auf Fehler
Überprüfen Sie die Pakete auf Fehler

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
Überprüfen Sie die RPM-Paketerstellung
Überprüfen Sie die RPM-Paketerstellung

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.

Similar Posts

Leave a Reply

Your email address will not be published. Required fields are marked *