Zurück zur GnuCash Wiki Hauptseite
Inhalt
Inhaltsverzeichnis
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:
Im Abschnitt "### build Guppi" beim Befehl ./configure die Option --disable-bonobo hinzufügen
Im Abschnitt "### build gnucash" zum einen die Zeile mit dem Befehl autoreconf ersatzlos löschen und zum anderen beim Befehl ./configure die Option --build=i686-pc-linux-gnu hinzufügen
Wenn in der Zeile von "Source0" die angegebene URL auf ".bz2" endet, das neu verwendete tarball-Paket aber (naturgemäß) auf ".gz" endet, muß in jener Zeile die Dateiendung der URL kurzerhand auf ".gz" angepasst werden.
Falls eine Zeile ähnlich "Patch: gnucash-%{version}.dif" existiert, so muß diese ersatzlos gelöscht werden (denn das mitgelieferte patch wird mit der neueren Version ja nicht funktionieren)
Und folgende Probleme sind beim Kompilieren berichtet worden:
Falls das Kompilieren abbricht und dabei eine Fehlermeldung ähnlich "gtk-config not found" ausgibt, dann muß man wohl die Environment-Variable PATH so ändern, daß der Gnome-Pfad auch darin enthalten ist, also z.B. export PATH=$PATH:/opt/gnome/bin ausführen und anschließend wieder versuchen
Falls das Kompilieren abbricht und dabei immer noch eine Fehlermeldung ähnlich "gtk-config not found" ausgibt, dann muß man wohl die Environment-Variable GTK_CONFIG auf den vollständigen Pfad jenes Programms setzen (nachzusehen in der Dateiliste des Pakets gtk-devel), z.B. export GTK_CONFIG=/opt/gnome/bin/gtk-config ausführen und anschließend wieder versuchen
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
Dieser Text wurde kopiert aus dieser E-Mail.
Weitere Diskussion hier
Hinweis für Entwickler: SuSE RPM packaging conventions
Hinweis für GnuCash 2.0 in Suse: https://bugzilla.novell.com/show_bug.cgi?id=104677