Rpm Paket erstellen: Unterschied zwischen den Versionen

Aus Xinux Wiki
Zur Navigation springen Zur Suche springen
 
(6 dazwischenliegende Versionen von 2 Benutzern werden nicht angezeigt)
Zeile 1: Zeile 1:
* Ein '''RPM-Paket''' ist ein Paketformat, das in Red Hat-basierten Linux-Distributionen wie Fedora und SUSE verwendet wird.
+
*[[rpm Paket Basis]] (x)
* Um ein RPM-Paket zu erstellen, benötigen Sie die folgenden Komponenten:
+
*[[rpm Paket erstellen Hello World]] (x)
* '''sudo -i'''
+
*[[RPM Paket erstellen aus einem Git Repository]]
* '''dnf install fedora-packager rpmdevtools gcc'''
+
*[[rpm Paket erstellen Apache2]]
 
 
= Anlegen der Entwicklungsumgebung =
 
* '''rpmdev-setuptree'''
 
* Dieser Befehl ist ein Shell-Skript, welches eine Ordnerstruktur im Homeverzeichnis des Benutzers anlegt
 
 
 
rpmbuild/
 
├── BUILD
 
├── BUILDROOT
 
├── RPMS
 
├── SOURCES
 
├── SPECS
 
└── SRPMS
 
 
 
* Unter ''SOURCES'' liegt der Source-Code in der Form ''<paket-name>-<versions-nummer>.tar.gz''
 
* In ''SPECS'' gibt man zusätzliche Paketinformationen wie Paketname, Versionsnummer, Beschreibung, etc. in einer ''.spec''-Datei an.
 
* Der Name des komprimierten Programm-Codes sollte mit denen in der ''.spec''-Datei übereinstimmen.
 
* Nach dem Erstellen des Pakets liegt das ''.rpm''-Paket unter ''RPMS''
 
 
 
= Herunterladen des Probe-Quellcodes =
 
 
 
* '''cd SOURCES'''
 
* Wir laden ein Testprogramm, welches "Hello, world!" auf die Kommandozeile schreibt
 
* '''wget http://ftp.gnu.org/gnu/hello/hello-2.10.tar.gz'''
 
 
 
= Paketspezifikationen =
 
* '''cd ../SPECS'''
 
* Eine Vorlage für die ''.spec''-Datei, kann man sich mit dem folgenden Befehl generieren:
 
* '''rpmdev-newspec --macros hello.spec'''
 
* Diese sollte man noch manuell anpassen
 
* '''vim hello.spec'''
 
 
 
Name:    hello
 
Version:  2.10
 
Release:  1%{?dist}
 
Summary:  The "Hello World" program from GNU
 
License:  GPLv3+
 
URL:      http://ftp.gnu.org/gnu/hello
 
Source0: https://ftp.gnu.org/gnu/hello/hello-%{version}.tar.gz
 
 
BuildRequires: gettext
 
 
Requires(post): info
 
Requires(preun): info
 
 
%description
 
The "Hello World" program, done with all bells and whistles of a proper FOSS
 
project, including configuration, build, internationalization, help files, etc.
 
 
%prep
 
%autosetup
 
 
%build
 
%configure
 
%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 Sep 06 2011 The Coon of Ty <Ty@coon.org> - 2.8-1
 
- Initial version of the package
 
 
 
= Bauen des Paketes =
 
 
 
* Aus dem ''SPEC''-Verzeichnis aus kann man nun das ''.rpm''-Paket erstellen
 
* '''rpmbuild -ba hello.spec'''
 
* '''ls ../RPMS/x86_64/'''
 
 
 
'''hello-2.10-1.fc36.x86_64.rpm'''  hello-debuginfo-2.10-1.fc36.x86_64.rpm  hello-debugsource-2.10-1.fc36.x86_64.rp
 
 
 
=Erstellen der SPEC-Datei=
 
*Eine SPEC-Datei enthält die Build-Anweisungen und Metadaten für das RPM-Paket.
 
;Erstellen Sie eine neue SPEC-Datei im Verzeichnis SPECS mit einem Texteditor Ihrer Wahl (z. B. nano oder *nano SPECS/meinprojekt.spec
 
;Füllen Sie die SPEC-Datei mit den entsprechenden Informationen aus. Hier ist ein Beispiel für den Inhalt einer SPEC-Datei:
 
<pre>
 
Name: meinprojekt
 
Version: 1.0
 
Release: 1%{?dist}
 
Summary: Eine kurze Beschreibung des Projekts
 
License: GPLv3+
 
URL: https://example.com
 
Source0: %{name}-%{version}.tar.gz
 
 
 
BuildRequires: dependencies
 
 
 
%description
 
Hier können Sie eine ausführliche Beschreibung Ihres Projekts angeben.
 
 
 
%prep
 
%autosetup
 
 
 
%build
 
Hier geben Sie die Build-Anweisungen an, z. B. das Kompilieren des Quellcodes.
 
 
 
%install
 
Hier geben Sie die Installationsanweisungen an, um die Dateien in das richtige Verzeichnis zu kopieren.
 
 
 
%files
 
Hier listen Sie alle Dateien auf, die in das RPM-Paket aufgenommen werden sollen.
 
 
 
%changelog
 
Hier können Sie Änderungen und Aktualisierungen für verschiedene Versionen des Pakets verfolgen.
 
Passen Sie die Werte für Name, Version, Release, Summary, License, URL, Source0, BuildRequires, Description und Files entsprechend an.
 
</pre>
 
=Erstellen des RPM-Pakets=
 
*Nachdem Sie die SPEC-Datei erstellt haben, können Sie das RPM-Paket erstellen.
 
;Wechseln Sie dazu in das Verzeichnis rpmbuild:
 
*cd ~/rpmbuild
 
;Führen Sie den Befehl rpmbuild mit dem -ba-Flag gefolgt von der Pfadangabe zur SPEC-Datei aus:
 
*rpmbuild -ba SPECS/meinprojekt.spec
 
 
 
Dieser Befehl erstellt sowohl das Source-Paket als auch das Binary-Paket. Das erstellte RPM-Paket wird im Verzeichnis RPMS oder SRPMS abgelegt, je nachdem, ob es sich um ein Binär- oder Source-Paket handelt.
 
 
 
=Überprüfung des RPM-Pakets=
 
;Sie können das erstellte RPM-Paket mit dem Befehl rpmlint überprüfen, um potenzielle Probleme zu identifizieren:
 
*rpmlint RPMS/ARCH/meinprojekt-1.0-1.ARCH.rpm
 
;Ersetzen Sie ARCH durch die entsprechende Architektur Ihres Systems (z. B. x86_64).
 
*Die Ausgabe von rpmlint hilft Ihnen dabei, eventuelle Fehler oder Warnungen zu beheben.
 

Aktuelle Version vom 18. Oktober 2023, 14:25 Uhr