Erstellen neuer rpm-Pakete - openBuild-Service - Eure Erfahrungen?

Hallo zusammen,

ich nutze neben der openSUSE 13.1 auch eine Slackware 14-Distribution und habe unter letzterer auch mal ein Paket erstellt. Ich war überrascht, dass die Paketerstellung nicht sonderlich kompliziert war und möchte mich nun an die Erstellung von Paketen unter openSUSE wagen. Gibt es dazu ein Tutorial oder HOWTO bzw. wäre es angebracht, den openSUSE Buildservice zu verwenden?

Auch die Erstellung eines RPMs ist an sich nicht sonderlich kompliziert. Du benötigst nur ein .spec File, das Informationen über das Paket, die Kommandos zum Compilieren und Installieren, sowie eine Dateiliste enthält.
Hier ist die “offizielle” Dokumentation für den Aufbau eines .spec Files:
http://www.tldp.org/HOWTO/RPM-HOWTO/Allerdings muss man inzwischen zum Bauen “rpmbuild” statt “rpm” verwenden, ansonsten sollte das aber alle notwendigen Grundlagen liefern.
Du findest das ganze übrigens auch auf deinem Rechner, unter /usr/share/doc/packages/rpm/RPM-HOWTO/index.html

Wenn du das OBS verwendest, ändert sich da eigtl. nicht viel. Das OBS machts halt einfacher, die Pakete für mehrere Distributionen/Versionen/Architekturen zu bauen und als repos einzubinden.

PS: rpmbuild erwartet die Sourcen in ~/rpmbuild/SOURCES/, das .spec File in ~/rpmbuild/SPEC/ und erstellt die fertigen Pakete dann in ~/rpmbuild/RPMS/ bzw. das .src.rpm in ~/rpmbuild/SRPMS/.

PS: Umfassendere Hinweise, speziell auf openSUSE bezogen, findest du z.B. auch hier:
http://de.opensuse.org/Portal:Paketbau

Danke wolfi für die Links und Informationen. Ich habe allerdings noch ein paar offene Fragen: Es gibt ja auch Source-RPMs, da könnte man ja ggf. das Specfile anpassen wenn eine neue Programmversion heraus kommt, oder? Kann man ggf. auch Source-RPMs von anderen Distributionen verwenden, die rpm verwenden? (Fedora, Mandriva etc.)? Ein eigenes openSUSE Repository zu pflegen wäre auf jeden Fall auch interessant.

Ja. Im Idealfall brauchst du nur den neuen Source-Tarball herunterladen und nach ~/rpmbuild/SOURCES schieben und die Version im Specfile entsprechend ändern.

Kann man ggf. auch Source-RPMs von anderen Distributionen verwenden, die rpm verwenden? (Fedora, Mandriva etc.)?

Prinzipiell ja, sogar binary RPMs. Der Aufbau/das Format der Pakete ist bei jeder (RPM-basierten) Distribution gleich.

Das Problem ist halt z.B., dass manche System-Pakete bei unterschiedlichen Distributionen anders heißen, das kann zu Problemen mit den Abhängigkeiten führen. Außerdem beinhalten unterschiedliche Distributionen auch unterschiedliche Versionen von Paketen, was natürlich auch wieder problematisch sein kann.
Auch die Pfade, wo bestimmte Sachen hininstalliert werden müssen, können sich unterscheiden, usw.

Ein Source-RPM kannst du übrigens direkt mit “rpmbuild --rebuild xxx.src.rpm” bauen, falls keine Änderungen notwendig sind.
“Installieren” kannst du es genauso wie ein Binär-RPM mit “rpm -i xxx.src.rpm” z.B., dabei werden die Sourcen und Patches nach ~/rpmbuild/SOURCES/ und das Spec-File nach ~/rpmbuild/SPECS/ kopiert (bzw. /usr/src/packages/(SOURCES|SPECS)/ wenn du es als root ausführst).

Kleiner Tipp am Rande: RPM Files sind eigtl. nur stinknormale (CPIO) Archive, du kannst sie also auch z.B. mit ark oder file-roller öffnen um den Inhalt zu betrachten. :wink:

Ein eigenes openSUSE Repository zu pflegen wäre auf jeden Fall auch interessant.

Wenn du Pakete am OBS baust, wird automatisch ein Repository angelegt. Jeder Benutzer hat automatisch ein home:username repo, und kann beliebig viele Unterprojekte (=Repos) anlegen.
Z.B.:
http://download.opensuse.org/repositories/home:/wolfi323/
http://download.opensuse.org/repositories/home:/wolfi323:/branches:/KDE:/Current/

Der nächste Schritt wäre dann, offizielle openSUSE Pakete aus den Factory-Development repos zu branchen, Änderungen durchzuführen/Fehler zu beheben/auf die neueste Version upzudaten, und dann in das entsprechende Repo zurückzusubmitten… :wink:

Danke nochmals wolfi,

ich würde gerne ein Paket für die ERP-Software “SQL Ledger” erstellen. Die Software ist in Perl geschrieben und es sind PostgreSQL und Apache als Dienste erforderlich.

Projektseite ist www.sql-ledger.com und Installationshinweise bekommt man unter: http://www.sql-ledger-network.com/wiki/doku.php/step_by_step_installation/opensuse

Ich möchte allerdings die Version vom SQL Ledger Network in ein rpm zusammen fassen. Diese gibt es bei github.com und beinhaltet die vollständige deutsche Übersetzung, welche ich vor kurzem vervollständigt habe.

git clone git://github.com/Tekki/sql-ledger.git

Because of a security leak , the template editor is disabled in the above repository. It is recommended not to use the master, but the full branch:

cd /usr/local/sql-ledger
git checkout -b full origin/full

Es ist halt eine Sammlung von Perl-CGI-Skripten. Das wäre dann “noarch” oder? Die Schritte wären dann wohl

  • über git die Sourcen herunter laden
  • einige Anpassungen in der Verzeichnisstruktur und der httpd.conf vornehmen lassen (das muss dann wahrscheinlich in das specfile, oder)
  • in einem rpm-Paket zusammenfassen

Am besten wäre es wahrscheinlich, die Pakete in folgende Rubrik einzuordnen:

https://build.opensuse.org/project/show/Application:ERP