Zurück zur GnuCash Wiki Hauptseite

Inhalt

1. Einleitung

Auf dieser Seite wird eine Anleitung zusammengestellt, wie man GnuCash selber kompilieren (übersetzen) kann, wenn man eine Distribution verwendet, die auf dem Paketmanager RPM basiert. Das gilt zum Beispiel für SuSE-Linux. In diesem Fall können die meisten Schritte des Kompilierens vom Paketmanager RPM ausgeführt und verwaltet werden, so daß man als Anwender möglichst wenige Anpassungen vornehmen muß.

Für andere Distributionen und versierte Anwender besteht darüber hinaus immer die Möglichkeit, aus den reinen .tar.gz-Quellpaketen zu installieren. Informationen dazu werden auf GnuCash/SourceInstall gesammelt.

2. Grundlagen

2.1. Programmpakete allgemein

Jedes Programmpaket wird von dessen Autoren zunächst im menschenlesbaren Quelltext bereitgestellt und zwar in einem tar.gz-Dateiarchiv (auch tarball genannt). Um das Programm benutzen zu können, muß es von einem Compiler in den maschinenlesbaren Binärcode übersetzt werden (engl. to compile, eingedeutscht kompilieren). Solche Compiler sind auf jedem Linux/Unix-System installiert, so daß theoretisch jeder Anwender das Kompilieren auch selber durchführen kann.

Trotzdem können beim Kompilieren Schwierigkeiten auftreten, denn: Jedes Programmpaket verwendet viele andere Bibliotheken, die auf dem jeweiligen Computer installiert sein müssen. Beim Compilieren muß das Programmpaket viele Details über die anderen Bibliotheken herausfinden (z.B. genaue Versionsnummer, Installationsverzeichnis), die sich aber von Linux-Distribution zu Linux-Distribution erheblich unterscheiden. In einem tar.gz-Quelltext-Paket ist daher zum Herausfinden dieser Details immer ein Hilfsprogramm namens configure enthalten. Ein versierter Entwickler kann diesem configure-Programm über die Kommandozeile alle benötigten Angaben mitteilen, aber für einen Nicht-Programmierer ist dies meistens zu schwierig.

Um diesem Problem zu begegnen, wurde der PaketManager RPM eingeführt, der Programmpakete im rpm-Format verwendet (kurz als RPMs bezeichnet). Diese RPMs gibt es in zwei Sorten: Einerseits gibt es fertig kompilierte (binary) RPMs jeweils für eine ganz bestimmte Linux-Distribution und -Version, und andererseits gibt es RPMs mit dem menschenlesbaren Quelltext (source) und detaillierten Anweisungen für das Compilieren dieses Quelltextes in einer speziellen zusätzlichen Datei (genannt spec-file).

2.2. Binary RPMs

Die binary RPMs sind erkennbar an Dateinamen, die ein Kürzel für die Distribution und für die Prozessorarchitektur enthalten, z.B. gnucash-1.8.10-suse90-i586.rpm. Diese sind für den Anwender am einfachsten zu installieren: Sofern das gewünschte Programmpaket für die benutzte Linux-Distribution und -Version als binary RPM existiert, wählt man dieses binary RPM von seinem Installationsmedium (z.B. CD, DVD) zum Installieren aus. Der Paketmanager wird selbstständig erkennen, ob eventuell weitere Bibliotheken zusätzlich installiert werden müssen, und wird diese ebenfalls zum Installieren auswählen (sofern auf der DVD vorhanden).

Das Installieren eines binary RPMs geschieht im Verwaltungstool wie Yast2 über "Software installieren".

Alternativ kann dies auch über den Kommandozeilenaufruf des Paketmanagers geschehen: Wenn man z.B. das Paket gwenhywfar-1.4-1.suse9.0.i586.rpm heruntergeladen hat, veranlasst man die Installation dieses binary RPMs über den Aufruf (als root):

  rpm -i gwenhywfar-1.4-1.suse9.0.i586.rpm

Sofern keine Probleme auftreten und gemeldet werden, ist nach Beendigung dieses Aufrufs das Paket fertig installiert.

2.3. Source RPMs

Die source RPMs sind erkennbar an der Endung .src.rpm. Diese Pakete enthalten in ihrer mitgelieferten spec-Datei detaillierte Kompilierungs-Anweisungen, um ein binary RPM selber erstellen lassen zu können. Diese spec-Dateien müssen allerdings auch "relativ genau" zu der benutzten Linux-Distribution und -Version passen, d.h. man kann nicht automatisch davon ausgehen, daß ein x-beliebiges spec-File auch für die benutzte Linux-Distribution das Kompilieren erfolgreich veranlassen wird. Dabei muß man beachten, woher man das source-RPM bezogen hat: Hat man ein source-RPM von seinem Distributor erhalten (z.B. von SuSE), dann ist das spec-file wahrscheinlich sehr passend. Hat man das source-RPM von jemandem anderes, dann kann es passieren, daß das spec-file gar nicht zur selber benutzten Distribution passt und, schlimmer noch, das benutzte Paketsystem vielleicht ziemlich durcheinanderbringt. Dabei gilt außerdem, daß spec-files um so schlechter sind, je älter sie sind.

Wenn ein source RPM installiert wird, wird ein tar.gz-Paket des Programm-Quelltextes und ein dazugehöriges spec-file in ein bestimmtes, vom Paketmanager genutztes Verzeichnis kopiert, z.B. nach /usr/src/packages. Dieses Installieren geschieht auf der Kommandozeile mit

  rpm -i gwenhywfar-1.4-1.src.rpm

Anschließend muß man das Kompilieren dieses Pakets veranlassen und zwar mit

  rpmbuild -ba gwenhywfar.spec

Sofern dieses fehlerfrei durchgeführt wird, sollte am Ende ein fertiges binary RPM und das dazugehörige devel-RPM entstanden sein. In der ca. siebtletzten Zeile der Meldungen müsste dies zu lesen sein, wo ungefähr steht:

Wrote: /usr/src/packages/RPMS/i586/gwenhywfar-1.4-1.suse9.1.i586.rpm
Wrote: /usr/src/packages/RPMS/i586/gwenhywfar-devel-1.4-1.suse9.1.i586.rpm

Diese binary RPMs kann man nun ganz normal installieren:

  rpm -i /usr/src/packages/RPMS/i586/gwenhywfar-1.4-1.suse9.1.i586.rpm \
         /usr/src/packages/RPMS/i586/gwenhywfar-devel-1.4-1.suse9.1.i586.rpm

3. Vorgehensweise für GnuCash

3.1. Abhängigkeiten

Da GnuCash ein Gnome-Programm ist, sollte zuerst die Paketauswahl "Gnome-Programmentwicklung" installiert werden. Für HBCI-Onlinebanking müssen sodann alle in GnuCash#upgrade genannten Pakete und deren -devel-Pakete installiert werden. Von jenen Paketen sind meistens Source-RPMs verfügbar. Installationsanweisungen für binary und -devel Pakete oben, für Source-RPMs ebenfalls oben.

/!\ Hinweis zur Erleichterung bei AqBanking, falls man definitiv keinen OFX-Import benötigt: Wenn das AqBanking-Paket ohne OFX-Unterstützung kompiliert werden soll, kann man (ausnahmsweise) die Datei aqbanking.spec ändern und zwar die Zeile BuildRequires: libofx >= 0.7.0 ersatzlos löschen und erst anschließend rpmbuild aufrufen. Das resultierende Binary-RPM enthält dann aber entgegen der normalen Erwartung keinen OFX-Importer und sollte deshalb zur Vermeidung von unerwarteten Verwirrungen besser nicht veröffentlicht werden.

Für GnuCash-2.0.x sind manche Abhängigkeiten auch auf ftp://ftp.suse.com/pub/people/sbrabec/gnucash2 zu finden; um Problemen mit der Binärkompatibilität zu entgehen, empfiehlt sich nur die Verwendung der Source-RPMs von jener Adresse.

3.2. GnuCash-Source-RPM

Sodann muß man das gnucash.src.rpm installieren, das in der Distribution mitgeliefert wird (das könnte z.B. Version 1.8.7 sein):

   rpm -i gnucash-1.8.7.src.rpm

oder im Verwaltungstool wie Yast2 über "Software installieren".

Um herauszufinden, ob GnuCash noch weitere Pakete benötigt, sollte man nun das Kompilieren dieser veralteten Version veranlassen:

   rpmbuild -ba gnucash.spec

und so lange alle als fehlend gemeldeten Pakete noch zusätzlich von seiner Distribution installieren, bis keine fehlenden Pakete mehr gemeldet werden und das Kompilieren erfolgreich zum Ende gekommen ist.

3.3. GnuCash Aktuelle Version

Das gnucash.src.rpm-Paket hat in /usr/src/packages/SOURCES/ ein gnucash-1.8.7.tar.gz-Paket abgelegt, zusammen mit einigen weiteren tar.gz-Paketen. An dieser Stelle wird nun das aktuelle gnucash-tar.gz-Paket (z.B. gnucash-1.8.10.tar.gz) hinkopiert. Das alte gnucash-Paket kann gelöscht werden. Die weiteren tar.gz-Pakete (z.B. Guppi und/oder g-wrap) werden unverändert stehen gelassen.

In der Datei /usr/src/packages/SPECS/gnucash.spec steht die 1.8.7-Versionsnummer, die auf 1.8.10 geändert werden muß. Dazu jene Datei mit einem beliebigen Texteditor öffnen, "1.8.7" in "1.8.10" ändern und Datei wieder speichern.

3.3.1. Potentielle Probleme im Spec-File

Leider scheint die mitgelieferte Spec-Datei von SuSE doch noch einige Probleme zu beinhalten. Folgende Änderungen in der Spec-Datei könnten daher nützlich sein:

Und folgende Probleme sind beim Kompilieren berichtet worden:

3.4. GnuCash Kompilieren

Nun das eigentliche Kompilieren veranlassen:

   rpmbuild -ba gnucash.spec

Bei SuSE bedeutet dies, daß nicht nur GnuCash kompiliert und für das fertige RPM vorgesehen wird, sondern auch einige der benötigten Pakete wie z.B. g-wrap und Guppi. Dadurch spart man sich einiges an zusätzlichem Installations-Aufwand.

3.5. RPM installieren

Dann sollte ein fertiges Suse-9.0 rpm entstanden sein, gemäß einer Meldung in der ca. siebtletzten Zeile, die ungefähr lautet:

Wrote: /usr/src/packages/RPMS/i586/gnucash-1.8.10.i586.rpm

Dieses rpm wird nun installiert:

   rpm -i /usr/src/packages/RPMS/i586/gnucash-1.8.10.i586.rpm

4. Fragen und Antworten

5. Kommentare

GnuCash Erklärung/RpmInstallieren (zuletzt geändert am 2008-08-23 21:29:22 durch p54A77F0B)