|
|
| (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.
| |