Mein Projekt als RPM/DEB Paket packen?

Für Installationen unter Linux-Systemen
MmVisual
Beiträge: 1582
Registriert: Fr 10. Okt 2008, 23:54
OS, Lazarus, FPC: Winuxarm (L 4 FPC 3.2.2)
CPU-Target: 32/64Bit

Mein Projekt als RPM/DEB Paket packen?

Beitrag von MmVisual »

Hallo,

Ich habe ein nettes Programm mittels Lazarus geschrieben, nun möchte ich gerne alle Dateien als RPM zusammen bekommen. Ich habe das noch nie gemacht und weiß also nicht was ich so brauchen.

Um es vorweg zu sagen, mir wäre ein grafischen Tool am liebsten, womit ich das machen kann:
- Dateien angeben
- Festlegen in welchen Ordner die installiert werden
- Bestimmte Dateien (Datenbank, Konfigurationsdateien) dürfen niemals überschrieben werden (weder bei Installation noch bei Update)
- Rechte von einzelnen Dateien abändern
- Links setzen
- Start-Menü Eintrag
- Neuinstallation und Update
- Abhängigkeiten automatisch mit installieren (z.B. libsqlite und kchmviewer)
- Uninstall soll nachfragen ob Datenbank/Konfiguration in takt lassen soll. (Neuinstallation überschreibt diese dann nicht!)
- Compile-Button wo mir dann ein RPM macht.
- zweiter Compile-Button wo mir dann ein DEB macht.
- Ähnlich wie "Inno-Setup" oder "Install-Shield"

In einem anderen Forum kämpft mit diesen SPEC Dateien und Möglichkeiten schon seit 2 Wochen jemand und bekommt das einfach nicht hin, daher möchte ich da mal selbst nach schauen. Ich selbst nutze Windows und habe Suse in einer Virtual Box installiert.

Kann mir bitte jemand weiterhelfen?

Mit den RPM Beschreibungen aus dem Internet komme ich überhaupt nicht klar. Da stehen jede Menge Verweise mit % und irgend welche Makrokürzel uvm. drin, aber ich verstehe nur Bahnhof. Wenn mir das jemand empfiehlt, dann bitte, bitte brauche ich eine Erklärung für jeden Buchstabe.

Grüße Markus.
Zuletzt geändert von MmVisual am So 9. Jan 2011, 10:49, insgesamt 2-mal geändert.
EleLa - Elektronik Lagerverwaltung - www.elela.de

Socke
Lazarusforum e. V.
Beiträge: 3178
Registriert: Di 22. Jul 2008, 19:27
OS, Lazarus, FPC: Lazarus: SVN; FPC: svn; Win 10/Linux/Raspbian/openSUSE
CPU-Target: 32bit x86 armhf
Wohnort: Köln
Kontaktdaten:

Re: Mein Projekt als RPM Paket packen?

Beitrag von Socke »

MmVisual hat geschrieben:...
- Neuinstallation und Update
- Uninstall soll nachfragen ob Datenbank/Konfiguration in takt lassen soll. (Neuinstallation überschreibt diese dann nicht!)
...
- Compile-Button wo mir dann ein RPM macht.
- zweiter Compile-Button wo mir dann ein DEB macht.
- Ähnlich wie "Inno-Setup" oder "Install-Shield"
Dir ist aber schon klar, dass die Paketverwaltungen unter Linux anders funktionieren als eine "Installtion" unter Windows? Ob dein Programm unter einer bestimmten Distribution läuft, hängt nicht zuletzt von den benutzten Bibliotheken ab. Daher werden Pakete in der Regel auch unter der Distribution erstellt, unter der sie eingesetzt werden sollen.
Durch den Benutzer erstellte/geänderte Daten werden in der Regel nicht gelöscht und auch nicht danach gefragt, da jede Nachfrage den gesamten Installtionsvorgang (in den nicht unüblicherweise auch andere Pakete involviert sind), unterbricht.

MmVisual hat geschrieben:- Start-Menü Eintrag
Sind durch freedesktop.org standardisiert und bedürfen daher unabhängig der Desktop-Umgebung (GNOME, KDE, etc.) nur einer Konfigurationsdatei, siehe unter http://standards.freedesktop.org/menu-spec/latest/.

Edit: Zu deiner eigentlichen Frage, wie man RPM-Pakte baut, kann ich dir mangels Erfahrung nichts sagen.
MfG Socke
Ein Gedicht braucht keinen Reim//Ich pack’ hier trotzdem einen rein

MmVisual
Beiträge: 1582
Registriert: Fr 10. Okt 2008, 23:54
OS, Lazarus, FPC: Winuxarm (L 4 FPC 3.2.2)
CPU-Target: 32/64Bit

Re: Mein Projekt als RPM Paket packen?

Beitrag von MmVisual »

>> Dir ist aber schon klar, dass die Paketverwaltungen unter Linux anders funktionieren als eine "Installtion" unter Windows?

Ja. Daher suche ich ein Tool, mit dem man einstellen kann was möglich ist. Ich habe schon ein paar kleine Anforderungen, die sollten doch eigentlich standard sein. Und da ich mit diesen kryptischen SPEC Dateien nicht durchblicke suche ich ein grafische Oberfläche, die das kann. Seit über 10 Jahren gibt es doch schon für Linux den grafischen Bildschirm und auch viele Programme. Daher ist es doch naheliegend, dass es ein (benutzerfreundliches) grafisches Tool auch dafür gibt.
Zuletzt geändert von MmVisual am So 9. Jan 2011, 10:49, insgesamt 1-mal geändert.
EleLa - Elektronik Lagerverwaltung - www.elela.de

Socke
Lazarusforum e. V.
Beiträge: 3178
Registriert: Di 22. Jul 2008, 19:27
OS, Lazarus, FPC: Lazarus: SVN; FPC: svn; Win 10/Linux/Raspbian/openSUSE
CPU-Target: 32bit x86 armhf
Wohnort: Köln
Kontaktdaten:

Re: Mein Projekt als RPM Paket packen?

Beitrag von Socke »

MmVisual hat geschrieben:Ja. Daher suche ich ein Tool, mit dem man einstellen kann was möglich ist. Ich habe schon ein paar kleine Anforderungen, die sollten doch eigentlich standard sein. Und da ich mit diesen kryptischen SPEC Dateien nicht durchblicke suche ich ein grafische Oberfläche, die das kann. Seit über 10 Jahren gibt es doch schon für Linux den grafischen Bildschirm und auch viele Programme. Daher ist es doch naheliegend, dass es ein (benutzerfreundliches) grafisches Tool auch dafür gibt.
Bisher habe ich für Debian-Pakete auch noch keine GUI zum Erstellen gefunden. Da gibt es nur diverse Hilfsscripts und -programme.

Ich denke die meisten Anforderungen werden allein schon durch die Paketverwaltung erfüllt, wenn die Pakete richtig erstellt sind.
MfG Socke
Ein Gedicht braucht keinen Reim//Ich pack’ hier trotzdem einen rein

Euklid
Lazarusforum e. V.
Beiträge: 2808
Registriert: Fr 22. Sep 2006, 10:38
OS, Lazarus, FPC: Lazarus v2.0.10, FPC 3.2.0
Wohnort: Hessen
Kontaktdaten:

Re: Mein Projekt als RPM Paket packen?

Beitrag von Euklid »

MmVisual: Für RPMs gibt es graphische Tools. Hatte vor einigen Jahren mal welche probiert; zu der Zeit funktionierten die aber mehr schlecht als recht. Musst mal googln.

Gruß, Euklid

Scotty
Beiträge: 768
Registriert: Mo 4. Mai 2009, 13:24
OS, Lazarus, FPC: Arch Linux, Lazarus 1.3 r44426M FPC 2.6.4
CPU-Target: x86_64-linux-qt/gtk2
Kontaktdaten:

Re: Mein Projekt als RPM/DEB Paket packen?

Beitrag von Scotty »

Kryptische SPECs: Ich habe auch eine Weile gebraucht, bei ich das Prinzip verstanden habe, aber es ist einfacher, als es aussieht. Falls du das noch brauchst, kann ich meine SPEC hier posten.

MmVisual
Beiträge: 1582
Registriert: Fr 10. Okt 2008, 23:54
OS, Lazarus, FPC: Winuxarm (L 4 FPC 3.2.2)
CPU-Target: 32/64Bit

Re: Mein Projekt als RPM/DEB Paket packen?

Beitrag von MmVisual »

Das wäre super. Im Internet finde ich fast ausschließlich Beschreibungen, die dann noch irgend was kompillieren wollen, was ich ja bei Lazarus nicht brauche.
EleLa - Elektronik Lagerverwaltung - www.elela.de

Socke
Lazarusforum e. V.
Beiträge: 3178
Registriert: Di 22. Jul 2008, 19:27
OS, Lazarus, FPC: Lazarus: SVN; FPC: svn; Win 10/Linux/Raspbian/openSUSE
CPU-Target: 32bit x86 armhf
Wohnort: Köln
Kontaktdaten:

Re: Mein Projekt als RPM/DEB Paket packen?

Beitrag von Socke »

Ich hab mir gerade http://fedoraproject.org/wiki/How_to_cr ... ep_section angelesen. Wäre es nicht möglich, dass du die entsprechenden nicht benötigten Abschnitte (Entpacken der Quellen, Patchen, Compilieren, usw.) einfach weg lässt?
MfG Socke
Ein Gedicht braucht keinen Reim//Ich pack’ hier trotzdem einen rein

Scotty
Beiträge: 768
Registriert: Mo 4. Mai 2009, 13:24
OS, Lazarus, FPC: Arch Linux, Lazarus 1.3 r44426M FPC 2.6.4
CPU-Target: x86_64-linux-qt/gtk2
Kontaktdaten:

Re: Mein Projekt als RPM/DEB Paket packen?

Beitrag von Scotty »

Zuerst muss die richtige Verzeichnisstruktur erstellt werden. rpmbuild macht das vielleicht. Im Verzeichnis BUILDROOT wird dann die Zielstruktur erstellt (vgl. Bild).
Bild

Dann erstmal ein Script:

Code: Alles auswählen

#!/bin/sh
rpmbuild -bb --target x86_64 ./SPECS/Scrabbel3D.spec 
rpmbuild -bb --target i386 ./SPECS/Scrabbel3D.spec
dpkg -b /home/tietze/Sourcen/Scrabble/v_3.1/Package/Debian
Dann ein SPEC

Code: Alles auswählen

Summary: A highly customizable Scrabble game that not only supports Classic Scrabble and Superscrabble but also 3D games and own boards.
Name: Scrabble3D
Version: 3.1.0
Release: 22
License: Creative Commons Attribution-NonCommercial
Group: Amusements/Games/Board/Puzzle
Source: http://scrabble.svn.sourceforge.net/viewvc/scrabble" onclick="window.open(this.href);return false;
URL: http://scrabble.game-server.cc/wiki" onclick="window.open(this.href);return false;
#ExcludeArch: i386
 
%description
Scrabble3D is a highly customizable Scrabble game that not only supports Classic Scrabble and Superscrabble but also 3D games and own boards. You can play local against the computer or connect to a game server to find other players. 
 Features:
 * Configurable board, letterset and design
 * Game against computer with support of multithreading
 * Post-hoc game analysis with calculation of best move by computer
 * Match with other players connected on a game server
 * NSA rating and highscore at game server
 * Time limit of games
 * Localization; use of non-standard digraphs like CH, RR, LL
 * Multilanguage help / wiki
 * Network games are buffered and asynchronous games are possible
 * Running games can be kibitzed
 
%files
/usr/bin/Scrabble3D
/usr/share/applications/Scrabble3D.desktop
/usr/share/pixmaps/Scrabble3D.png
 
%changelog
* Mon Oct 10 2010 (Heiko Tietze)
- First RPM package
Meine DEBIAN/control sieht so aus:

Code: Alles auswählen

Package: scrabble3d
Version: 3.1.0-22
Section: games 
Priority: optional
Architecture: amd64
Essential: no
Installed-Size: 5810
Maintainer: Heiko Tietze (xxxx)
Homepage: http://scrabble.game-server.cc/wiki" onclick="window.open(this.href);return false;
Provides: Scrabble3D
Description: Scrabble3D is a highly customizable Scrabble game that not only supports Classic Scrabble and Superscrabble but also 3D games and own boards. You can play local against the computer or connect to a game server to find other players. 
 Features:
 * Configurable board, letterset and design
 * Game against computer with support of multithreading
 * Post-hoc game analysis with calculation of best move by computer
 * Match with other players connected on a game server
 * NSA rating and highscore at game server
 * Time limit of games
 * Localization; use of non-standard digraphs like CH, RR, LL
 * Multilanguage help / wiki
 * Network games are buffered and asynchronous games are possible
 * Running games can be kibitzed
Die DEBs benenne ich um und erzeuge 64/32bit neu. Müsste ich eigentlich auch noch irgendwie in das Script einbauen...
Ich hätte es ansonsten auch kürzer formulieren können: Erstelle in BUILDROOT die Zielverzeichnisstrukur mit allen Daten. Den Rest findest du allein raus :mrgreen:

MmVisual
Beiträge: 1582
Registriert: Fr 10. Okt 2008, 23:54
OS, Lazarus, FPC: Winuxarm (L 4 FPC 3.2.2)
CPU-Target: 32/64Bit

Re: Mein Projekt als RPM/DEB Paket packen?

Beitrag von MmVisual »

Vielen Dank für die ausführliche Info. Ich beise mich da mal durch. :D
EleLa - Elektronik Lagerverwaltung - www.elela.de

marcov
Beiträge: 1103
Registriert: Di 5. Aug 2008, 09:37
OS, Lazarus, FPC: Windows ,Linux,FreeBSD,Dos (L trunk FPC trunk)
CPU-Target: 32/64,PPC(+64), ARM
Wohnort: Eindhoven (Niederlande)

Re: Mein Projekt als RPM/DEB Paket packen?

Beitrag von marcov »

Die .spec's von Free Pascal sind auch verfügbar (einen für Doc und einen für FPC selber) :

http://svn.freepascal.org/svn/fpcbuild/trunk/install/" onclick="window.open(this.href);return false;

carli
Beiträge: 657
Registriert: Sa 9. Jan 2010, 17:32
OS, Lazarus, FPC: Linux 2.6.x, SVN-Lazarus, FPC 2.4.0-2
CPU-Target: 64Bit

Re: Mein Projekt als RPM/DEB Paket packen?

Beitrag von carli »

Wäre das nicht mal ein Lazarus-Projekt wert, so einen .deb/.rpm/.exe Generator zu bauen?

MmVisual
Beiträge: 1582
Registriert: Fr 10. Okt 2008, 23:54
OS, Lazarus, FPC: Winuxarm (L 4 FPC 3.2.2)
CPU-Target: 32/64Bit

Re: Mein Projekt als RPM/DEB Paket packen?

Beitrag von MmVisual »

Ich bin schon ein ganzes Stück weiter gekommen...

Ich habe folge Zeile im SPEC (Zeile 5):

if [ -f %{prefix}/EleLa/*.sq3 ]; then cp -u %{prefix}/EleLa/*.sq3 %{prefix}/EleLa/Backup/; fi

Die erzeugt aber die Zeile beim ausführem vom Setup:
/var/tmp/rpm-tmp.zbeNT6: Zeile 5: [: /opt/EleLa/EleLa.sq3: Zweistelliger (binärer) Operator erwartet.

Wie kann ich das mit dem Wildcard-Zeichen "*" machen?

Ich habe andere ähnliche Zeilen drin, ohne den Wildcard *, da klappt es ohne Fehlermeldung.

Edit:
Ich konnte das ein weing Eingrenzen, es der Teil:
if [ -f %{prefix}/EleLa/*.sq3 ]; then
bei dem der Fehler auftritt.

Gruß Markus
EleLa - Elektronik Lagerverwaltung - www.elela.de

marcov
Beiträge: 1103
Registriert: Di 5. Aug 2008, 09:37
OS, Lazarus, FPC: Windows ,Linux,FreeBSD,Dos (L trunk FPC trunk)
CPU-Target: 32/64,PPC(+64), ARM
Wohnort: Eindhoven (Niederlande)

Re: Mein Projekt als RPM/DEB Paket packen?

Beitrag von marcov »

MmVisual hat geschrieben: Wie kann ich das mit dem Wildcard-Zeichen "*" machen?
Versuche .* , vielleicht ist es ein regex ausdruck

Ein . akzeptiert jedes Zeichen, * gibt an Serien von das Zeichen davor zu akzeptieren. Zusammen ist das ungefähr Windows *

MmVisual
Beiträge: 1582
Registriert: Fr 10. Okt 2008, 23:54
OS, Lazarus, FPC: Winuxarm (L 4 FPC 3.2.2)
CPU-Target: 32/64Bit

Re: Mein Projekt als RPM/DEB Paket packen?

Beitrag von MmVisual »

Ich habe mal den Befehl in der Konsole eingegeben:

linux-691y:/opt/EleLa # if [ -f ./*.sq3 ]; then echo "Hallo"; fi
bash: [: ./EleLa.sq3: Zweistelliger (binärer) Operator erwartet.

Der müsste eigentlich "Hallo" schreiben, weil es zwei Dateien *.sq3 gibt.
EleLa - Elektronik Lagerverwaltung - www.elela.de

Antworten