Difference between revisions of "Debian"

From GnuCash
Jump to: navigation, search
m
m (use <syntaxhighlight…>)
 
(54 intermediate revisions by 14 users not shown)
Line 1: Line 1:
== Installing GnuCash on Debian ==
+
[[Category:Distribution]] [[Category:Linux]]
 +
{| class="wikitable" style="margin: auto;"
 +
! scope="row"|Languages
 +
| [[He/{{PAGENAME:דביאן}}|עִברִית]]
 +
|}
 +
=== About Debian Releases and Release Names ===
 +
Debian does not follow a fixed release schedule. The releases started with version 1.1 (named "Buzz") in 1996. All the release names refer to characters in the [https://en.wikipedia.org/wiki/Toy_Story_(franchise) Toy Story movies].
  
The name of the GnuCash package in Debian and Ubuntu is [http://packages.debian.org/gnucash gnucash]. The easiest way to install it is to run <tt>apt-get install gnucash</tt>.
+
Debian packages and releases undergo rigid procedural and quality checks:
 +
*The ''current'' '''stable''' release contains packages that have withstood several checks and at least a certain length of time in the ''testing'' trunk.
 +
*The '''testing''' trunk becomes the next named release after its contents are ''frozen into a release''. Packages get into the current ''testing'' trunk from Debian's '''unstable''' trunk (which is also called '''sid''' after the Toy Story character who regularly destroyed toys).
 +
*Newly-released packages get accepted ''into sid'' by approved Debian maintainers.
 +
*Additional procedures address packages having ''security issues'' or that are ''not actively maintained''.
 +
;[https://backports.debian.org/ Backports]:Backports are packages taken from the next Debian release (called "testing"), adjusted and recompiled for usage on Debian stable. To use the official backports for Debian-Bullseye, add the following line into your <tt>sources.list</tt>: <Syntaxhighlight lang="debcontrol">
 +
deb http://deb.debian.org/debian bullseye-backports main
 +
</Syntaxhighlight>
 +
;Current stable:Debian 11 "Bullseye," the "stable" release since August 2021, shipped with [https://packages.debian.org/source/buster/gnucash Gnucash version 4.4] (without backports on 2023-02-14).
 +
;Current testing:bookworm comes with Gnucash 4.13.
  
== Creating packages with HBCI and aqofxconnect enabled ==
+
Wikipedia has a handy [https://en.wikipedia.org/wiki/Debian_version_history#Release_table chart showing Debian's past, current and future releases.]
  
In order to communicate with banks using the [[HBCI]] protocol, GnuCash uses the AqBanking library. Unfortunately, due to [http://www.gnome.org/~markmc/openssl-and-the-gpl.html licensing incompatibilities], the packages shipped by Debian are not allowed to make use of this library. The Debian bug tracking this issue is [http://bugs.debian.org/cgi-bin/bugreport.cgi?bug=303234 #303234].
+
=== About Debian Repositories ===
 +
The name of the GnuCash package in Debian and Ubuntu is [http://packages.debian.org/gnucash gnucash]. You can find up-to-date development information about the package using the [https://tracker.debian.org/pkg/gnucash Debian Package Tracker].  
  
Fortunately, support for HBCI can easily by re-enabled. This is done by rebuilding the gnucash package on your own machine, enabling the use of AqBanking in the process.
+
The tracker will contain links to whichever package versions are frozen into the three most recent Debian releases, plus the version in testing, and the version in unstable as of that moment. For example, in June 2021,
  
These instructions apply to version '''2.0.1-2''' of [http://packages.debian.org/src:gnucash Debian's gnucash package], running on '''Debian 4.0 ("etch")'''.  They also apply to '''Ubuntu Edgy''' gnucash version '''2.0.1-3ubuntu3'''. As time marches on, and the package is updated, the specific details of these instructions will become outdated, so be prepared to search for newer packages (e.g., libaqbanking17-dev instead of libaqbanking-16.dev) or use higher version numbers (e.g., 2.0.2 instead of 2.0.1) as necessary.
+
* Debian testing (bookworm) has GnuCash 4.13 (the version in sid) (2023-02-14)
 +
* Debian 11 (bullseye) has GnuCash 4.4 (until the next version in sid progresses to bookworm)
 +
* Debian 10 (buster) contains GnuCash 3.4 (will not change, but you can use Backports to get 4.4)
 +
* Debian 9 (stretch) contains GnuCash 2.6.15 (will not change)
 +
* Debian 8 (jessie) contains GnuCash 2.6.4 (will not change)
  
Additionally you need to recompile libaqbanking.
+
(The most recent GnuCash version should normally be in Debian testing, but in October 2018 the sole volunteer maintaining the Debian GnuCash package indicated needing help. If you might assist with the packaging, including helping "triage" bugs, use the [https://tracker.debian.org/pkg/gnucash information on the tracker page] for details.)
 +
 
 +
=== About Debian's GnuCash packages ===
 +
Debian splits the GnuCash installation into 4 packages:
 +
* gnucash
 +
* gnucash-common
 +
* python3-gnucash
 +
* gnucash-docs
 +
(The python-gnucash package includes bindings to link GnuCash to python. The gnucash-docs package contains the documentation in multiple languages and gets built separately from a separate source package.)
 +
 
 +
In addition, to activate the (optional) ability to store GnuCash data in a database, you will need to install the two packages:
 +
* libdbi1
 +
* libdbi-dev
 +
Plus you will need to install the libdbd package for whichever supported database(s) you want to use (choose one or all):
 +
* libdbd-sqlite3
 +
* libdbd-mysql 
 +
* libdbd-pgsql
 +
Although all the database backends are still considered experimental in GnuCash 3.x, the SQLite3 database backend is the best tested and supported.
 +
 
 +
== Installing Debian's GnuCash packages ==
 +
The easiest way to install GnuCash from a terminal: <syntaxhighlight lang="sh">
 +
sudo apt install gnucash
 +
</syntaxhighlight>
 +
Unless you override the defaults, apt will automatically install gnucash-common gnucash-docs and python-gnucash packages, too.
 +
 
 +
To explicitly install ALL optional packages (described above), the command would be <syntaxhighlight lang="sh">
 +
sudo apt install gnucash gnucash-common gnucash-docs python-gnucash libdbi1 libdbi-dev libdbd-sqlite3 libdbd-mysql libdbd-pgsql
 +
</syntaxhighlight>
 +
 
 +
===Using the Debian Archive===
 +
GnuCash individual packages can be downloaded from http://ftp.us.debian.org/debian/pool/main/g/gnucash/ which is an archive used by old distributions of Debian but usually also includes fairly recent versions of GnuCash.
 +
 
 +
See http://ftp.us.debian.org/debian/README.html.
 +
 
 +
=== About GetDeb ===
 +
In this wiki and archived discussions you may see references to "GetDeb," which once held unofficial backported Debian packages of popular applications including GnuCash. The site was maintained by a small group of private volunteers. Sometime before 2018 the site became stale and ultimately disappeared. In 2019 someone bought the domain and seems to be using it as a news site.
 +
 
 +
== Online Banking ==
 +
For online banking, GnuCash uses the AqBanking library.  
  
=== Downloading prerequisites ===
+
;Debian testing (bookworm): has AqBanking 6.2.10.
  
To begin with, install the packages that are required to build any Debian package, the packages that are required to build the gnucash package, the package for the AqBanking development library and a couple of other packages that we will make use of in the instructions below:
+
;Debian Lenny: and Ubuntu 8.10 Intrepid now have gnucash packages with online banking enabled.  So for Debian Lenny and Ubuntu Intrepid, the gnucash package included in the distribution can be installed.
  
<pre># sudo apt-get install build-essential devscripts fakeroot libaqbanking16-dev aqbanking16-qt-wizard
+
;Note: In Debian the gwenhywfar library is split into a number of packages see https://packages.debian.org/testing/source/libgwenhywfar.
# sudo apt-get build-dep gnucash libaqbanking</pre>
 
  
If libaqbanking16-dev can not be found, try asking apt to install '''libaqbanking-dev'''. Apt should then tell you which package you really need.  Or try searching for libaqbanking on [http://packages.debian.org packages.debian.org] or [http://packages.ubuntu.com packages.ubuntu.com] to find the correct version. Try [http://packages.debian.org/cgi-bin/search_packages.pl?keywords=libaqbanking&searchon=names&subword=1&version=all&release=all] or [http://packages.ubuntu.com/cgi-bin/search_packages.pl?searchon=names&subword=1&version=edgy&release=all&keywords=libaqbanking].
+
;AqBanking < 3.0: From a licensing incompatibility Debian and Ubuntu were unable to enable online banking in their gnucash packages. But starting with Gnucash version 2.2.6 and AqBanking version 3.0 this incompatibility has been resolved.
  
Make a directory to work in and download and extract the gnucash source code:
+
== Old Build Instructions (Ubuntu Gutsy and below, Debian sarge and below) ==
 +
These instructions apply to version '''2.0.1-2''' of [http://packages.debian.org/src:gnucash Debian's gnucash package], running on '''Debian 4.0 ("etch")'''.  They also apply to '''Ubuntu Edgy''' gnucash version '''2.0.1-3ubuntu3''', but please consult the [[Ubuntu]] page for Ubuntu specific instructions. As time marches on, and the package is updated, the specific details of these instructions will become outdated, so be prepared to search for newer packages (e.g., libaqbanking17-dev instead of libaqbanking-16.dev) or use higher version numbers (e.g., 2.0.2 instead of 2.0.1) as necessary.
  
<pre>$ mkdir gnucash
+
Additionally you need to recompile libaqbanking.
$ cd gnucash
 
$ apt-get source gnucash libaqbanking</pre>
 
  
=== GnuCash ===
+
=== Downloading prerequisites ===
==== Configuring ====
+
To begin with, install the packages that are required to build any Debian package, the packages that are required to build the gnucash package, the package for the AqBanking development library and a couple of other packages that we will make use of in the instructions below: <syntaxhighlight lang="sh">
 +
sudo aptitude install build-essential devscripts fakeroot libaqbanking16-dev aqbanking16-qt-wizard
 +
sudo aptitude build-dep gnucash libaqbanking
 +
</syntaxhighlight>
  
The source code for gnucash will now be extracted to a directory named '''gnucash-2.x.x'''. Now, we enable HBCI support. To do this, edit the '''debian/rules''' file:
+
If libaqbanking16-dev can not be found, try asking apt to install '''libaqbanking-dev'''. Apt should then tell you which package you really need.  Or try searching for libaqbanking on [http://packages.debian.org packages.debian.org] or [http://packages.ubuntu.com packages.ubuntu.com] to find the correct version.  Try [http://packages.debian.org/cgi-bin/search_packages.pl?keywords=libaqbanking&searchon=names&subword=1&version=all&release=all] or [http://packages.ubuntu.com/cgi-bin/search_packages.pl?searchon=names&subword=1&version=edgy&release=all&keywords=libaqbanking].
  
<pre>$ cd gnucash-2.*
+
Make a directory to work in and download and extract the gnucash source code: <syntaxhighlight lang="sh">
$ editor debian/rules</pre>
+
mkdir gnucash
 +
cd gnucash
 +
apt-get source gnucash libaqbanking
 +
</syntaxhighlight>
  
This is a makefile that specifies how to build the gnucash packages. Find where gnucash's configure script is invoked, and add <tt>'''--enable-hbci'''</tt> to the configure script's arguments. When I did this I found it on line 24. I changed the line to read:
+
=== GnuCash ===
 +
==== Configuring ====
 +
The source code for gnucash will now be extracted to a directory named '''gnucash-2.x.x'''. Now, we enable HBCI support. To do this, edit the '''debian/rules''' file: <syntaxhighlight lang="sh">
 +
cd gnucash-2.*
 +
editor debian/rules
 +
</syntaxhighlight>
  
<pre>env LDFLAGS="-L/usr/X11R6/lib" GUILE=/usr/bin/guile-1.6 CFLAGS="$(CFLAGS)" ./configure  
+
This is a makefile that specifies how to build the gnucash packages. Find where gnucash's configure script is invoked, and add <tt>'''--enable-hbci'''</tt> to the configure script's arguments. When I did this I found it on line 24. I changed the line to read: <syntaxhighlight lang="sh">
 +
env LDFLAGS="-L/usr/X11R6/lib" GUILE=/usr/bin/guile-1.6 CFLAGS="$(CFLAGS)" ./configure  
 
--disable-static --sysconfdir=/etc --prefix=/usr --mandir=/usr/share/man  
 
--disable-static --sysconfdir=/etc --prefix=/usr --mandir=/usr/share/man  
 
--infodir=/usr/share/info --libexecdir=/usr/lib --libdir=/usr/lib/gnucash --enable-ofx  
 
--infodir=/usr/share/info --libexecdir=/usr/lib --libdir=/usr/lib/gnucash --enable-ofx  
--disable-error-on-warning --enable-hbci || cat config.log</pre>
+
--disable-error-on-warning --enable-hbci || cat config.log
 +
</syntaxhighlight>
  
 
Note:  <tt>'''--enable-mt940'''</tt> is no longer required as of 2.2.0; it is included in <tt>'''--enable-hbci'''</tt>.  For pre-2.2.0 builds, add <tt>'''--enable-mt940'''</tt> after <tt>'''--enable-hbci'''</tt> if that functionality is needed.
 
Note:  <tt>'''--enable-mt940'''</tt> is no longer required as of 2.2.0; it is included in <tt>'''--enable-hbci'''</tt>.  For pre-2.2.0 builds, add <tt>'''--enable-mt940'''</tt> after <tt>'''--enable-hbci'''</tt> if that functionality is needed.
  
''Optional, but strongly recommended:'' make a note of the changes you have made in the package's changelog.  The '''devscripts''' package contains a utility to automate the process:
+
''Optional, but strongly recommended:'' make a note of the changes you have made in the package's changelog.  The '''devscripts''' package contains a utility to automate the process: <syntaxhighlight lang="sh">
 
+
debchange --nmu 'Enable HBCI support'
<pre>$ debchange --nmu 'Enable HBCI support'</pre>
+
</syntaxhighlight>
  
 
This enables a few nice behaviors for your package.
 
This enables a few nice behaviors for your package.
Line 57: Line 126:
  
 
==== Building ====
 
==== Building ====
 
+
Now we are ready to build the package: <syntaxhighlight lang="sh">
Now we are ready to build the package.
+
dpkg-buildpackage -b -us -uc -rfakeroot
 
+
</syntaxhighlight>
<pre>$ dpkg-buildpackage -b -us -uc -rfakeroot</pre>
 
  
 
This is where you make a cup of tea (or, if you have a slow computer, go and watch the Lord of the Rings trilogy).  If you want to verify that you did everything correctly, the command will output a bunch of "checking for ..." lines right at the beginning.  Look for the lines
 
This is where you make a cup of tea (or, if you have a slow computer, go and watch the Lord of the Rings trilogy).  If you want to verify that you did everything correctly, the command will output a bunch of "checking for ..." lines right at the beginning.  Look for the lines
Line 85: Line 153:
  
 
==== Completing the install ====
 
==== Completing the install ====
 +
<syntaxhighlight lang="sh">
 +
cd ..
 +
sudo dpkg --install gnucash_*.deb gnucash-common_*.deb
 +
</syntaxhighlight>
  
<pre>$ cd ..
+
Finally, free up a few hundred MB of disk space (after verifying that gnucash works as expected) by removing the directory where the package was built: <syntaxhighlight lang="sh">
# sudo dpkg --install gnucash_*.deb gnucash-common_*.deb</pre>
+
rm -r gnucash-2.0.1
 +
</syntaxhighlight>
  
Finally, free up a few hundred MB of disk space (after verifying that gnucash works as expected) by removing the directory where the package was built:
+
If you want to hold the package at the current version and prevent new upstream package versions from being installed, apt allows you to apply a hold to a package.  This will prevent apt from doing anything with the package.  One way to apply a hold (it can also be done in the various package manager guis) is by running: <syntaxhighlight lang="sh">
 
+
echo "gnucash hold" | sudo dpkg --set-selections
<pre>$ rm -r gnucash-2.0.1</pre>
+
</syntaxhighlight>
 
 
If you want to hold the package at the current version and prevent new upstream package versions from being installed, apt allows you to apply a hold to a package.  This will prevent apt from doing anything with the package.  One way to apply a hold (it can also be done in the various package manager guis) is by running:
 
 
 
<pre>$ echo "gnucash hold" | sudo dpkg --set-selections</pre>
 
  
 
More information about this can be found at [http://www.debian-administration.org/articles/332 debian-administration.org] and [http://www.debian.org/doc/manuals/apt-howto/ The APT Howto]
 
More information about this can be found at [http://www.debian-administration.org/articles/332 debian-administration.org] and [http://www.debian.org/doc/manuals/apt-howto/ The APT Howto]
  
 
=== libaqbanking ===
 
=== libaqbanking ===
 
 
==== Configuring ====
 
==== Configuring ====
 
 
The source code for libaqbanking will now be extracted to a directory named '''libaqbanking-2.x.x'''. Now, we enable aqofxconnect support. To do this, we reverse these [http://svn.debian.org/wsvn/aqbanking/libaqbanking/trunk/debian/?rev=77&sc=1 changes].
 
The source code for libaqbanking will now be extracted to a directory named '''libaqbanking-2.x.x'''. Now, we enable aqofxconnect support. To do this, we reverse these [http://svn.debian.org/wsvn/aqbanking/libaqbanking/trunk/debian/?rev=77&sc=1 changes].
  
 
Specifically:
 
Specifically:
 
+
# edit the '''debian/rules''' file: <syntaxhighlight lang="sh">
edit the '''debian/rules''' file:
+
cd libaqbanking-2.*
 
+
editor debian/rules
<pre>$ cd libaqbanking-2.*
+
</syntaxhighlight>
$ editor debian/rules</pre>
+
# And add aqofxconnect to the list of backends, i.e. from:
 
+
#:<pre>DEB_CONFIGURE_EXTRA_FLAGS := --disable-static --with-backends="aqhbci aqdtaus aqgeldkarte" --with-frontends="cbanking g2banking qbanking kbanking"</pre>
And add aqofxconnect to the list of backends.
+
#:to:
 
+
#:<pre>DEB_CONFIGURE_EXTRA_FLAGS := --disable-static --with-backends="aqhbci aqdtaus aqgeldkarte aqofxconnect" --with-frontends="cbanking g2banking qbanking kbanking"</pre>
i.e. from:
+
# Create the file debian/libaqbanking-ofx0.install: <syntaxhighlight lang="sh">
 
+
editor debian/libaqbanking-ofx0.install
<pre>DEB_CONFIGURE_EXTRA_FLAGS := --disable-static --with-backends="aqhbci aqdtaus aqgeldkarte" --with-frontends="cbanking g2banking qbanking kbanking"</pre>
+
</syntaxhighlight>
 
+
#: And put this text in it:
to:
 
 
 
<pre>DEB_CONFIGURE_EXTRA_FLAGS := --disable-static --with-backends="aqhbci aqdtaus aqgeldkarte aqofxconnect" --with-frontends="cbanking g2banking qbanking kbanking"</pre>
 
 
 
Create the file debian/libaqbanking-ofx0.install:
 
<pre>$ editor debian/libaqbanking-ofx0.install</pre>
 
 
 
And put this text in it:
 
 
<pre>usr/lib/aqbanking/plugins/16/imexporters/ofx.*
 
<pre>usr/lib/aqbanking/plugins/16/imexporters/ofx.*
 
usr/lib/aqbanking/plugins/16/providers/aqofxconnect.*
 
usr/lib/aqbanking/plugins/16/providers/aqofxconnect.*
 
usr/lib/aqbanking/plugins/16/frontends/qbanking/cfgmodules/aqofxconnect.*
 
usr/lib/aqbanking/plugins/16/frontends/qbanking/cfgmodules/aqofxconnect.*
 
usr/lib/libaqofxconnect.so.*</pre>
 
usr/lib/libaqofxconnect.so.*</pre>
 
+
# <syntaxhighlight lang="sh">
<pre>$ edit debian/control</pre>
+
edit debian/control
 
+
</syntaxhighlight>
And add this (notice the single space at the start of some lines):
+
#:And add this (notice the single space at the start of some lines):
 
<pre>Package: libaqbanking-ofx0
 
<pre>Package: libaqbanking-ofx0
 
Provides: libaqbanking-backend
 
Provides: libaqbanking-backend
Line 140: Line 199:
 
Architecture: any
 
Architecture: any
 
Depends: ${shlibs:Depends}
 
Depends: ${shlibs:Depends}
 +
Conflicts: libaqofxconnect4
 
Description: library for OFX online banking
 
Description: library for OFX online banking
 
  AqBanking provides a middle layer between the applications
 
  AqBanking provides a middle layer between the applications
Line 152: Line 212:
 
  Homepage: http://www.aquamaniac.de/aqbanking/
 
  Homepage: http://www.aquamaniac.de/aqbanking/
 
</pre>
 
</pre>
 
+
# <syntaxhighlight lang="sh">
<pre>debchange --nmu 'Enable aqofxconnect'</pre>
+
debchange --nmu 'Enable aqofxconnect'
 +
</syntaxhighlight>
  
 
==== Building ====
 
==== Building ====
 
+
<syntaxhighlight lang="sh">
<pre>$ dpkg-buildpackage -b -us -uc -rfakeroot</pre>
+
dpkg-buildpackage -b -us -uc -rfakeroot
 +
</syntaxhighlight>
  
 
Look for aqofxconnect:
 
Look for aqofxconnect:
Line 168: Line 230:
  
 
==== Installing ====
 
==== Installing ====
 +
<syntaxhighlight lang="sh">
 +
cd ..
 +
sudo dpkg --install libaqbanking-ofx0_*.deb
 +
</syntaxhighlight>
  
<pre>$ cd ..
+
Optional: <syntaxhighlight lang="sh">
# sudo dpkg --install libaqbanking-ofx0_*.deb</pre>
+
rm -r libaqbanking-2.*
 +
</syntaxhighlight>
  
Optional:
+
<syntaxhighlight lang="sh">
 
+
echo "libaqbanking-ofx0 hold" | sudo dpkg --set-selections
<pre>$ rm -r libaqbanking-2.*</pre>
+
</syntaxhighlight>
 
 
<pre>$ echo "libaqbanking-ofx0 hold" | sudo dpkg --set-selections</pre>
 
  
 
== Enabling debugging symbols ==
 
== Enabling debugging symbols ==
 
+
The procedure is similar to the one above: <syntaxhighlight lang="sh">
The procedure is similar to the one above:
+
aptitude install build-essential fakeroot devscripts
 
+
aptitude build-dep gnucash
<pre># apt-get install build-essential fakeroot devscripts
+
mkdir gnucash
# apt-get build-dep gnucash
+
cd gnucash
$ mkdir gnucash
+
apt-get source gnucash
$ cd gnucash
+
cd gnucash-2.0.1
$ apt-get source gnucash
+
editor debian/rules
$ cd gnucash-2.0.1
+
</syntaxhighlight>
$ editor debian/rules</pre>
 
  
 
Now add the <tt>'''--enable-debug'''</tt> option to the arguments of the configure script.
 
Now add the <tt>'''--enable-debug'''</tt> option to the arguments of the configure script.
  
<pre>$ debchange --nmu 'Enable debugging'
+
<syntaxhighlight lang="sh">
$ DEB_BUILD_OPTIONS=nostrip dpkg-buildpackage -b -us -uc -rfakeroot
+
debchange --nmu 'Enable debugging'
$ cd ..
+
DEB_BUILD_OPTIONS=nostrip dpkg-buildpackage -b -us -uc -rfakeroot
# dpkg --install gnucash_*.deb gnucash-common_*.deb</pre>
+
cd ..
 +
dpkg --install gnucash_*.deb gnucash-common_*.deb
 +
</syntaxhighlight>
  
 
== Alternatively build a different version of Gnucash directly from source ==
 
== Alternatively build a different version of Gnucash directly from source ==
This may be useful if you want to use a later version than the ones in Debian's repositories. Rather than building a Debian package I just used the instructions provided by Gnucash for any flavour of Linux. These notes are no more than confirmation that those instructions work. I don't know enough about building packages - integrating a build within a package would presumably be a better longer term solution but the following gets the job done. I performed this install of Gnucash 2.2.4 into Debian Etch - this was my first foray into compiling and it wasn't difficult.
+
=== GnuCash Versions >= 3.0 ===
 +
Gnucash from version 3.0 no longer uses autotools for configuring the build and uses CMake instead. Until Debian specific instructions are provided consider adapting the build instructions for Ubuntu distributions [[Building#Ubuntu]]
 +
=== GnuCash Versions <= 2.6.21 ===
 +
This may be useful if you want to use a later version than the ones in Debian's repositories. Rather than building a Debian package I just used the instructions provided by Gnucash for any flavour of Linux. These notes are no more than confirmation that those instructions work. I don't know enough about building packages - integrating a build within a package would presumably be a better longer term solution but the following gets the job done. I performed this install of Gnucash 2.2.4 into Debian Etch - this was my first foray into compiling and it wasn't difficult. <syntaxhighlight lang="sh">
 +
sudo aptitude purge gnucash
 +
</syntaxhighlight>
  
First if Gnucash has been installed from Debian repositories I would suggest you uninstall it using aptitude (or Synaptic GUI) as follows. (I generally use aptitude rather than apt-get where possible)
+
First install all dependencies: <syntaxhighlight lang="sh">
  $ sudo aptitude purge gnucash
+
sudo aptitude update
 
+
sudo aptitude install build-essential
First install all dependencies
+
sudo aptitude build-dep gnucash
  $ sudo aptitude update
+
</syntaxhighlight>
  $ sudo aptitude install build-essential
 
  $ sudo apt-get build-dep gnucash
 
 
(someone else may know if any of these are not essential for this task, but they are sufficient)
 
(someone else may know if any of these are not essential for this task, but they are sufficient)
  
 
download source and docs from Gnucash web site (in my case to my desktop)
 
download source and docs from Gnucash web site (in my case to my desktop)
http://sourceforge.net/projects/gnucash/
+
{{URL:SF}}projects/gnucash/
  
move them to a new gnucash-source directory (obviously change "russell" to your own login name):
+
move them to a new gnucash-source directory (obviously change "russell" to your own login name): <syntaxhighlight lang="sh">
  $ cd ~
+
cd ~
  $ mkdir gnucash-source
+
mkdir gnucash-source
  $ mv /home/russell/Desktop/gnucash* /home/russell/gnucash-source
+
mv /home/russell/Desktop/gnucash* /home/russell/gnucash-source
 +
</syntaxhighlight>
  
unpack (creates 2 directories) - modify the file names as necessary (e.g. ...2.2.5 etc)
+
unpack (creates 2 directories) - modify the file names as necessary (e.g. ...2.2.5 etc) <syntaxhighlight lang="sh">
  $ tar -xf gnucash-source/gnucash-2.2.4.tar.bz2
+
tar -xf gnucash-source/gnucash-2.2.4.tar.bz2
  $ tar -xf gnucash-source/gnucash-docs-2.2.0.tar.gz
+
tar -xf gnucash-source/gnucash-docs-2.2.0.tar.gz
 +
</syntaxhighlight>
  
 
Installation instructions are in /home/russell/gnucash-source/gnucash-2.2.4/INSTALL which you may wish to read.
 
Installation instructions are in /home/russell/gnucash-source/gnucash-2.2.4/INSTALL which you may wish to read.
  
Now move into the directory you are going to compile from:
+
Now move into the directory you are going to compile from: <syntaxhighlight lang="sh">
  $ cd ~/gnucash-2.2.4
+
cd ~/gnucash-2.2.4
 
+
</syntaxhighlight>
First you run the ./configure script. I am advised that you can get a cleaner install if you add --prefix in order to install in a separate directory i.e.
 
  $ ./configure --prefix=/opt/gnucash-2.2.4
 
This means that gnucash will install into /opt/gnucash-2.2.4 instead of the default /usr/local. The problem with the default is that it may be difficult to uninstall it if you want to upgrade the system with a later version or a Debian gnucash package, because there may also be other applications in /usr/local. However I didn't know about this at the time so I just used ./configure, next time I may try the --prefix
 
  
  $ ./configure
+
First you run the ./configure script. I am advised that you can get a cleaner install if you add --prefix in order to install in a separate directory i.e.<syntaxhighlight lang="sh">
  $ make
+
./configure --prefix=/opt/gnucash-2.2.4
  $ make check
+
</syntaxhighlight>
  (may not be necessary to do make check, but do it anyway in case it indicates a problem)
+
This means that gnucash will install into /opt/gnucash-2.2.4 instead of the default /usr/local. The problem with the default is that it may be difficult to uninstall it if you want to upgrade the system with a later version or a Debian gnucash package, because there may also be other applications in /usr/local. However I didn't know about this at the time so I just used ./configure, next time I may try the --prefix <syntaxhighlight lang="sh">
  $ sudo make install
+
./configure
 +
make
 +
make check
 +
# may not be necessary to do make check, but do it anyway in case it indicates a problem
 +
sudo make install
 +
</syntaxhighlight>
  
Also you will need to build the docs as they are a separate package
+
Also you will need to build the docs as they are a separate package<syntaxhighlight lang="sh">
  $ cd ~/gnucash-docs-2.2.0
+
cd ~/gnucash-docs-2.2.0
  $ ./configure
+
./configure
    (if you want to use the --prefix make sure you use the same directory as above i.e.
+
# if you want to use the --prefix make sure you use the same directory as above i.e.
      ./configure --prefix=/opt/gnucash-2.2.4)
+
# ./configure --prefix=/opt/gnucash-2.2.4)
  $ make
+
make
  $ sudo make install
+
sudo make install
 +
</syntaxhighlight>
  
 
If you need to find the binary it should be in /opt/gnucash-2.2.4/bin or /usr/local/bin depending on whether or not you used the --prefix with ./configure.
 
If you need to find the binary it should be in /opt/gnucash-2.2.4/bin or /usr/local/bin depending on whether or not you used the --prefix with ./configure.
Line 248: Line 322:
 
When running Gnucash for the first time you will have to go through the setup - I chose default values
 
When running Gnucash for the first time you will have to go through the setup - I chose default values
  
Optional cleanup:
+
;Optional Cleanup: First you might want to archive the downloaded source if you want to be able to reinstall it later<syntaxhighlight lang="sh">
First you might want to archive the downloaded source if you want to be able to reinstall it later
+
mv /home/russell/gnucash-source /whereever/.
    $ mv /home/russell/gnucash-source /whereever/.
+
</syntaxhighlight>
Then you can remove the compile stuff by:
+
Then you can remove the compile stuff by:<syntaxhighlight lang="sh">
    $ cd ~/gnucash-2.2.4
+
cd ~/gnucash-2.2.4
    $ make clean
+
make clean
    $ make distclean
+
make distclean
    $ cd ~/gnucash-docs-2.2.0
+
cd ~/gnucash-docs-2.2.0
    $ make clean
+
make clean
    $ make distclean
+
make distclean
 +
</syntaxhighlight>

Latest revision as of 17:58, 29 December 2023

Languages עִברִית

About Debian Releases and Release Names

Debian does not follow a fixed release schedule. The releases started with version 1.1 (named "Buzz") in 1996. All the release names refer to characters in the Toy Story movies.

Debian packages and releases undergo rigid procedural and quality checks:

  • The current stable release contains packages that have withstood several checks and at least a certain length of time in the testing trunk.
  • The testing trunk becomes the next named release after its contents are frozen into a release. Packages get into the current testing trunk from Debian's unstable trunk (which is also called sid after the Toy Story character who regularly destroyed toys).
  • Newly-released packages get accepted into sid by approved Debian maintainers.
  • Additional procedures address packages having security issues or that are not actively maintained.
Backports
Backports are packages taken from the next Debian release (called "testing"), adjusted and recompiled for usage on Debian stable. To use the official backports for Debian-Bullseye, add the following line into your sources.list:
deb http://deb.debian.org/debian bullseye-backports main
Current stable
Debian 11 "Bullseye," the "stable" release since August 2021, shipped with Gnucash version 4.4 (without backports on 2023-02-14).
Current testing
bookworm comes with Gnucash 4.13.

Wikipedia has a handy chart showing Debian's past, current and future releases.

About Debian Repositories

The name of the GnuCash package in Debian and Ubuntu is gnucash. You can find up-to-date development information about the package using the Debian Package Tracker.

The tracker will contain links to whichever package versions are frozen into the three most recent Debian releases, plus the version in testing, and the version in unstable as of that moment. For example, in June 2021,

  • Debian testing (bookworm) has GnuCash 4.13 (the version in sid) (2023-02-14)
  • Debian 11 (bullseye) has GnuCash 4.4 (until the next version in sid progresses to bookworm)
  • Debian 10 (buster) contains GnuCash 3.4 (will not change, but you can use Backports to get 4.4)
  • Debian 9 (stretch) contains GnuCash 2.6.15 (will not change)
  • Debian 8 (jessie) contains GnuCash 2.6.4 (will not change)

(The most recent GnuCash version should normally be in Debian testing, but in October 2018 the sole volunteer maintaining the Debian GnuCash package indicated needing help. If you might assist with the packaging, including helping "triage" bugs, use the information on the tracker page for details.)

About Debian's GnuCash packages

Debian splits the GnuCash installation into 4 packages:

  • gnucash
  • gnucash-common
  • python3-gnucash
  • gnucash-docs

(The python-gnucash package includes bindings to link GnuCash to python. The gnucash-docs package contains the documentation in multiple languages and gets built separately from a separate source package.)

In addition, to activate the (optional) ability to store GnuCash data in a database, you will need to install the two packages:

  • libdbi1
  • libdbi-dev

Plus you will need to install the libdbd package for whichever supported database(s) you want to use (choose one or all):

  • libdbd-sqlite3
  • libdbd-mysql
  • libdbd-pgsql

Although all the database backends are still considered experimental in GnuCash 3.x, the SQLite3 database backend is the best tested and supported.

Installing Debian's GnuCash packages

The easiest way to install GnuCash from a terminal:
sudo apt install gnucash

Unless you override the defaults, apt will automatically install gnucash-common gnucash-docs and python-gnucash packages, too.

To explicitly install ALL optional packages (described above), the command would be
sudo apt install gnucash gnucash-common gnucash-docs python-gnucash libdbi1 libdbi-dev libdbd-sqlite3 libdbd-mysql libdbd-pgsql

Using the Debian Archive

GnuCash individual packages can be downloaded from http://ftp.us.debian.org/debian/pool/main/g/gnucash/ which is an archive used by old distributions of Debian but usually also includes fairly recent versions of GnuCash.

See http://ftp.us.debian.org/debian/README.html.

About GetDeb

In this wiki and archived discussions you may see references to "GetDeb," which once held unofficial backported Debian packages of popular applications including GnuCash. The site was maintained by a small group of private volunteers. Sometime before 2018 the site became stale and ultimately disappeared. In 2019 someone bought the domain and seems to be using it as a news site.

Online Banking

For online banking, GnuCash uses the AqBanking library.

Debian testing (bookworm)
has AqBanking 6.2.10.
Debian Lenny
and Ubuntu 8.10 Intrepid now have gnucash packages with online banking enabled. So for Debian Lenny and Ubuntu Intrepid, the gnucash package included in the distribution can be installed.
Note
In Debian the gwenhywfar library is split into a number of packages see https://packages.debian.org/testing/source/libgwenhywfar.
AqBanking < 3.0
From a licensing incompatibility Debian and Ubuntu were unable to enable online banking in their gnucash packages. But starting with Gnucash version 2.2.6 and AqBanking version 3.0 this incompatibility has been resolved.

Old Build Instructions (Ubuntu Gutsy and below, Debian sarge and below)

These instructions apply to version 2.0.1-2 of Debian's gnucash package, running on Debian 4.0 ("etch"). They also apply to Ubuntu Edgy gnucash version 2.0.1-3ubuntu3, but please consult the Ubuntu page for Ubuntu specific instructions. As time marches on, and the package is updated, the specific details of these instructions will become outdated, so be prepared to search for newer packages (e.g., libaqbanking17-dev instead of libaqbanking-16.dev) or use higher version numbers (e.g., 2.0.2 instead of 2.0.1) as necessary.

Additionally you need to recompile libaqbanking.

Downloading prerequisites

To begin with, install the packages that are required to build any Debian package, the packages that are required to build the gnucash package, the package for the AqBanking development library and a couple of other packages that we will make use of in the instructions below:
sudo aptitude install build-essential devscripts fakeroot libaqbanking16-dev aqbanking16-qt-wizard
sudo aptitude build-dep gnucash libaqbanking

If libaqbanking16-dev can not be found, try asking apt to install libaqbanking-dev. Apt should then tell you which package you really need. Or try searching for libaqbanking on packages.debian.org or packages.ubuntu.com to find the correct version. Try [1] or [2].

Make a directory to work in and download and extract the gnucash source code:
mkdir gnucash
cd gnucash
apt-get source gnucash libaqbanking

GnuCash

Configuring

The source code for gnucash will now be extracted to a directory named gnucash-2.x.x. Now, we enable HBCI support. To do this, edit the debian/rules file:
cd gnucash-2.*
editor debian/rules
This is a makefile that specifies how to build the gnucash packages. Find where gnucash's configure script is invoked, and add --enable-hbci to the configure script's arguments. When I did this I found it on line 24. I changed the line to read:
env LDFLAGS="-L/usr/X11R6/lib" GUILE=/usr/bin/guile-1.6 CFLAGS="$(CFLAGS)" ./configure 
--disable-static --sysconfdir=/etc --prefix=/usr --mandir=/usr/share/man 
--infodir=/usr/share/info --libexecdir=/usr/lib --libdir=/usr/lib/gnucash --enable-ofx 
--disable-error-on-warning --enable-hbci || cat config.log

Note: --enable-mt940 is no longer required as of 2.2.0; it is included in --enable-hbci. For pre-2.2.0 builds, add --enable-mt940 after --enable-hbci if that functionality is needed.

Optional, but strongly recommended: make a note of the changes you have made in the package's changelog. The devscripts package contains a utility to automate the process:
debchange --nmu 'Enable HBCI support'

This enables a few nice behaviors for your package.

  1. When you wonder in six months time, "what changes did I make to that package?", you can check by examining the /usr/share/doc/gnucash/changelog.Debian.gz file.
  2. The version of the package you are building will be slightly higher than the version of the packages in the Debian or Ubuntu archive. This will prevent apt from overwriting the new package with the old package from the archives. If a new version of gnucash is packaged by the Debian or Ubuntu package maintainers, it will be installed over the package we are building here. (You would then have to repeat these instructions.)

If this is not the desired result, you can apply a hold to the gnucash package. See below for more information.

Building

Now we are ready to build the package:
dpkg-buildpackage -b -us -uc -rfakeroot

This is where you make a cup of tea (or, if you have a slow computer, go and watch the Lord of the Rings trilogy). If you want to verify that you did everything correctly, the command will output a bunch of "checking for ..." lines right at the beginning. Look for the lines

checking whether to use OFX... yes -- failure is fatal
checking for libofx version >= 0.7.0... found 0.8.0
checking for libofx/libofx.h... yes
checking for libofx... yes
configure: WARNING: MT940 importing support is enabled but is totally experimental!
checking for aqbanking >= "1.3.0"... yes
checking HBCI_CFLAGS...  
checking HBCI_LIBS... -laqbanking  
checking for aqbanking >= "1.0.0"... yes
checking HBCI_CFLAGS...  
checking HBCI_LIBS... -laqbanking

Also, at the end of all the checking, configure will output a summary report. Notice the ofx, hbci, and mt940 in the Optional Components line.

Options detected/selected
  -------------------------
  gnucash version ...... : 2.0.1
  Build for host ....... : i686-pc-linux-gnu
  Optional components....: ofx hbci mt940

Completing the install

cd ..
sudo dpkg --install gnucash_*.deb gnucash-common_*.deb
Finally, free up a few hundred MB of disk space (after verifying that gnucash works as expected) by removing the directory where the package was built:
rm -r gnucash-2.0.1
If you want to hold the package at the current version and prevent new upstream package versions from being installed, apt allows you to apply a hold to a package. This will prevent apt from doing anything with the package. One way to apply a hold (it can also be done in the various package manager guis) is by running:
echo "gnucash hold" | sudo dpkg --set-selections

More information about this can be found at debian-administration.org and The APT Howto

libaqbanking

Configuring

The source code for libaqbanking will now be extracted to a directory named libaqbanking-2.x.x. Now, we enable aqofxconnect support. To do this, we reverse these changes.

Specifically:

  1. edit the debian/rules file:
    cd libaqbanking-2.*
    editor debian/rules
    
  2. And add aqofxconnect to the list of backends, i.e. from:
    DEB_CONFIGURE_EXTRA_FLAGS := --disable-static --with-backends="aqhbci aqdtaus aqgeldkarte" --with-frontends="cbanking g2banking qbanking kbanking"
    to:
    DEB_CONFIGURE_EXTRA_FLAGS := --disable-static --with-backends="aqhbci aqdtaus aqgeldkarte aqofxconnect" --with-frontends="cbanking g2banking qbanking kbanking"
  3. Create the file debian/libaqbanking-ofx0.install:
    editor debian/libaqbanking-ofx0.install
    
    And put this text in it:
usr/lib/aqbanking/plugins/16/imexporters/ofx.*
usr/lib/aqbanking/plugins/16/providers/aqofxconnect.*
usr/lib/aqbanking/plugins/16/frontends/qbanking/cfgmodules/aqofxconnect.*
usr/lib/libaqofxconnect.so.*
  1. edit debian/control
    
    And add this (notice the single space at the start of some lines):
Package: libaqbanking-ofx0
Provides: libaqbanking-backend
Enhances: libaqbanking0c2a
Section: libs
Architecture: any
Depends: ${shlibs:Depends}
Conflicts: libaqofxconnect4
Description: library for OFX online banking
 AqBanking provides a middle layer between the applications
 and online banking libraries implementing various file formats and protocols.
 Plugins supporting OFX, DTAUS, and HBCI are available. For the latter,
 AqHBCI is required.
 .
 This package provides support for Open Financial Exchange (OFX) in AqBanking.
 OFX is a specification for the electronic exchange of financial data between
 financial institutions, business and consumers via the Internet.
 .
 Homepage: http://www.aquamaniac.de/aqbanking/
  1. debchange --nmu 'Enable aqofxconnect'
    

Building

dpkg-buildpackage -b -us -uc -rfakeroot

Look for aqofxconnect:

Summary
----------------------------------------------------
AqBanking version  : 2.2.3.0-stable
Supported backends : aqhbci aqdtaus aqgeldkarte aqofxconnect
Supported frontends: cbanking g2banking qbanking kbanking

Installing

cd ..
sudo dpkg --install libaqbanking-ofx0_*.deb
Optional:
rm -r libaqbanking-2.*
echo "libaqbanking-ofx0 hold" | sudo dpkg --set-selections

Enabling debugging symbols

The procedure is similar to the one above:
aptitude install build-essential fakeroot devscripts
aptitude build-dep gnucash
mkdir gnucash
cd gnucash
apt-get source gnucash
cd gnucash-2.0.1
editor debian/rules

Now add the --enable-debug option to the arguments of the configure script.

debchange --nmu 'Enable debugging'
DEB_BUILD_OPTIONS=nostrip dpkg-buildpackage -b -us -uc -rfakeroot
cd ..
dpkg --install gnucash_*.deb gnucash-common_*.deb

Alternatively build a different version of Gnucash directly from source

GnuCash Versions >= 3.0

Gnucash from version 3.0 no longer uses autotools for configuring the build and uses CMake instead. Until Debian specific instructions are provided consider adapting the build instructions for Ubuntu distributions Building#Ubuntu

GnuCash Versions <= 2.6.21

This may be useful if you want to use a later version than the ones in Debian's repositories. Rather than building a Debian package I just used the instructions provided by Gnucash for any flavour of Linux. These notes are no more than confirmation that those instructions work. I don't know enough about building packages - integrating a build within a package would presumably be a better longer term solution but the following gets the job done. I performed this install of Gnucash 2.2.4 into Debian Etch - this was my first foray into compiling and it wasn't difficult.
sudo aptitude purge gnucash
First install all dependencies:
sudo aptitude update
sudo aptitude install build-essential
sudo aptitude build-dep gnucash

(someone else may know if any of these are not essential for this task, but they are sufficient)

download source and docs from Gnucash web site (in my case to my desktop) https://sourceforge.net/projects/gnucash/

move them to a new gnucash-source directory (obviously change "russell" to your own login name):
cd ~
mkdir gnucash-source
mv /home/russell/Desktop/gnucash* /home/russell/gnucash-source
unpack (creates 2 directories) - modify the file names as necessary (e.g. ...2.2.5 etc)
tar -xf gnucash-source/gnucash-2.2.4.tar.bz2
tar -xf gnucash-source/gnucash-docs-2.2.0.tar.gz

Installation instructions are in /home/russell/gnucash-source/gnucash-2.2.4/INSTALL which you may wish to read.

Now move into the directory you are going to compile from:
cd ~/gnucash-2.2.4
First you run the ./configure script. I am advised that you can get a cleaner install if you add --prefix in order to install in a separate directory i.e.
./configure --prefix=/opt/gnucash-2.2.4
This means that gnucash will install into /opt/gnucash-2.2.4 instead of the default /usr/local. The problem with the default is that it may be difficult to uninstall it if you want to upgrade the system with a later version or a Debian gnucash package, because there may also be other applications in /usr/local. However I didn't know about this at the time so I just used ./configure, next time I may try the --prefix
./configure
make
make check
# may not be necessary to do make check, but do it anyway in case it indicates a problem
sudo make install
Also you will need to build the docs as they are a separate package
cd ~/gnucash-docs-2.2.0
./configure
# if you want to use the --prefix make sure you use the same directory as above i.e.
# ./configure --prefix=/opt/gnucash-2.2.4)
make
sudo make install

If you need to find the binary it should be in /opt/gnucash-2.2.4/bin or /usr/local/bin depending on whether or not you used the --prefix with ./configure.

When running Gnucash for the first time you will have to go through the setup - I chose default values

Optional Cleanup
First you might want to archive the downloaded source if you want to be able to reinstall it later
mv /home/russell/gnucash-source /whereever/.
Then you can remove the compile stuff by:
cd ~/gnucash-2.2.4
make clean
make distclean
cd ~/gnucash-docs-2.2.0
make clean
make distclean