Difference between revisions of "Building"
m (→Compiling Newer Ubuntu Packages on an Older Release ("self-backporting"): told wiki not to make repository url linkable) |
(→Reverse commands: format) |
||
(33 intermediate revisions by 11 users not shown) | |||
Line 2: | Line 2: | ||
===Disclaimer=== | ===Disclaimer=== | ||
− | This page deals with building the '''developers version''' of GnuCash from the '' | + | This page deals with building the '''developers version''' of GnuCash from the ''[[Git]] repository''. If you are searching instructions for the ''stable version'', you should read [[GnuCash#Installation]]. |
This page deals also not with optional modules of third parties like the Perl module Finance::Quote. | This page deals also not with optional modules of third parties like the Perl module Finance::Quote. | ||
===Get and Configure the Sources=== | ===Get and Configure the Sources=== | ||
− | For the very latest source code, | + | For the very latest source code, get the sources from [[Git]] or use the latest release source file of type <tt>gnucash-<version>.tar.gz</tt> from [https://sourceforge.net/projects/gnucash/files/ Sourceforge]. '''Do not attempt to use tarballs from GitHub.''' Examine the [[Dependencies]] wiki page and the [https://github.com/Gnucash/gnucash/blob/trunk/README.dependencies README.dependencies] file for the list of build dependencies for your distribution, the [https://github.com/Gnucash/gnucash/blob/trunk/README.git README.git] file for notes on compiling gnucash, and the [https://github.com/Gnucash/gnucash/blob/trunk/HACKING HACKING] file for notes on hacking the code. |
Here are the basic steps one might end up taking: | Here are the basic steps one might end up taking: | ||
Line 13: | Line 13: | ||
1. Change to gnucash directory | 1. Change to gnucash directory | ||
cd gnucash | cd gnucash | ||
− | 2. If this code was retrieved from [[ | + | 2. If this code was retrieved from [[Git]], generate the configure script (otherwise skip this step) |
./autogen.sh | ./autogen.sh | ||
3. Look at available configure options | 3. Look at available configure options | ||
Line 24: | Line 24: | ||
--enable-error-on-warning --enable-compile-warnings \ | --enable-error-on-warning --enable-compile-warnings \ | ||
[--enable-ofx [...]] | [--enable-ofx [...]] | ||
+ | ;--prefix: Where should the package be installed? If you install for test purposes, you might consider to install it below your home directory to avoid ''sudo''ing. You should never use the same path as you distribution! | ||
5. Compile and install | 5. Compile and install | ||
make | make | ||
+ | :optional - if you changed something in the sources: | ||
+ | make check | ||
+ | :If your prefix was below $HOME: | ||
make install | make install | ||
+ | :else | ||
+ | sudo make install | ||
+ | :Sudo will ask you for the administrator password. | ||
+ | |||
6. Run | 6. Run | ||
− | /opt/gnucash-devel/bin/gnucash | + | /opt/gnucash-devel/bin/gnucash [options] |
+ | :Again use the option ''--help'' to see a list. | ||
=== Using separate build directory === | === Using separate build directory === | ||
Line 43: | Line 52: | ||
Then you can run ''make'', and ''make install'' as normal. | Then you can run ''make'', and ''make install'' as normal. | ||
+ | |||
+ | === Reverse commands === | ||
+ | In case you dislike your '''installation''', run from your build directory | ||
+ | [sudo] make uninstall | ||
+ | to remove it, ''before'' you change relevant options like the prefix. | ||
+ | |||
+ | To clean up your '''build''' directory, run | ||
+ | make clean | ||
+ | If you use a separate build directory, you can remove its content instead. | ||
+ | |||
+ | In some cases, that might not be sufficient, then clean your '''git''' gnucash directory with | ||
+ | git clean -f | ||
+ | |||
+ | To remove everything not part of the repo, including directories and ignored files, run | ||
+ | git clean -fdx -e /.project -e /.cproject -e /.autotools -e /.settings/ | ||
+ | '''Note:''' The exceptions are only necessary for Eclipse users. Else all their project information would be lost. | ||
+ | |||
+ | In this case you will have to start with ./autogen-sh again. | ||
== Distro-specific Information == | == Distro-specific Information == | ||
− | See the [ | + | See the [https://github.com/Gnucash/gnucash/blob/trunk/README.dependencies README.dependencies] file for library dependency notes. |
Also check out [[Dependencies|the dependencies page]]. | Also check out [[Dependencies|the dependencies page]]. | ||
+ | |||
+ | === Slackware === | ||
+ | |||
+ | Slackware installation is covered on [[Slackware|this page]]. | ||
=== Debian === | === Debian === | ||
Line 67: | Line 98: | ||
postgresql-dev (to enable sql support) | postgresql-dev (to enable sql support) | ||
− | If you are building from | + | If you are building from git, you will also need the following installed before running autogen.sh: |
automake | automake | ||
Line 83: | Line 114: | ||
=== Ubuntu === | === Ubuntu === | ||
− | Ubuntu releases are supported for various lengths of time; Wikipedia has a [http://en.wikipedia.org/wiki/List_of_Ubuntu_releases# | + | Ubuntu releases are supported for various lengths of time; Wikipedia has a [http://en.wikipedia.org/wiki/List_of_Ubuntu_releases#Table_of_versions handy chart showing which versions are still supported]. |
+ | |||
+ | '''Note:''' Dear Ubunteros, please do not copy and paste whole paragraphs. Instead adjust single sections in the form | ||
+ | :Version x and newer: | ||
+ | ::do this | ||
+ | :Version x-1 and before: | ||
+ | ::do that. | ||
+ | :Can someone of you clean up this chapter and later remove this note? | ||
==== Compiling Newer Ubuntu Packages on an Older Release ("self-backporting") ==== | ==== Compiling Newer Ubuntu Packages on an Older Release ("self-backporting") ==== | ||
− | If you are on an older version of Ubuntu (or Debian for that matter) such as | + | If you are on an older version of Ubuntu (or Debian for that matter) such as Trusty 14.04 LTS, you may be able to compile a newer Ubuntu or Debian version yourself (essentially backporting it yourself). |
+ | |||
+ | If the newer package is available in Utopic 14.10, add a line in your /etc/apt/sources.list (or for newer versions of Ubuntu, include a new file in the /etc/apt/sources.list.d/ directory) with the correct format. For Utopic, the line would be: | ||
+ | |||
+ | deb-src <nowiki>http://archive.ubuntu.com/ubuntu</nowiki> utopic main restricted universe | ||
+ | |||
+ | You want the version (Utopic in above example) to be newer than the system release you have installed. Then you can use the following lines to compile and install whatever software version is in the newer Ubuntu release, "backporting" the newer software to your older release of Ubuntu. | ||
+ | |||
+ | cd ~/src/ | ||
+ | sudo aptitude update | ||
+ | sudo apt-get install build-essential fakeroot | ||
+ | sudo apt-get build-dep gnucash | ||
+ | apt-get --compile source gnucash | ||
+ | sudo dpkg -i *.deb | ||
+ | |||
+ | Easy as 1-2-3!* | ||
+ | |||
+ | * If <code>apt-get build-dep</code> fails on the gnucash packages with a message like "E: Build-Depends dependency for gnucash cannot be satisfied because the package XXXXX cannot be found" then that means you need additional updated libraries on your system in order to backport the software. Unless you know there are only one or two new libraries needed, it's most likely MUCH easier just to build GnuCash from source. (See directions below.) | ||
+ | |||
+ | * If dpkg -i *.deb fails because it lists a bunch of dependencies (this happens if you've never installed gnucash before) the easiest way to get apt to bring them in is using -f (fix broken) install: | ||
+ | sudo apt-get -f install | ||
+ | |||
+ | ==== Ubuntu 14.04 LTS (Trusty Tahr) ==== | ||
+ | |||
+ | To build from the source tarball download the source code tarball from http://www.gnucash.org/download.phtml and extract to an appropriate directory. | ||
+ | |||
+ | Next install the build dependencies | ||
+ | sudo apt-get build-dep gnucash | ||
+ | |||
+ | (On a fresh install I also needed to purge guile-2.0 and install these packages as well follow the guide below for issues with slib) | ||
+ | sudo apt-get purge guile-2.0 | ||
+ | sudo apt-get install slib libgnomeui-common libgnomeui-dev guile-1.8 guile-1.8-dev checkinstall | ||
− | + | if want to use the alternative database backends then: | |
+ | sudo apt-get install libdbd-{sqlite3,pgsql,mysql} | ||
− | + | In a terminal cd to the gnucash directory and run | |
+ | ./configure --prefix=/path/to/install/gnucash/to --enable-compile-warnings --with-html-engine=webkit | ||
+ | make | ||
+ | sudo checkinstall | ||
− | + | The prefix might be, for example, | |
− | + | --prefix=/usr/bin/gnucash2.4 | |
− | |||
− | |||
− | + | Running checkinstall will ask you some options on how the package is named, etc. This will produce a .DEB which you can then simply install (adjust the path/filename accordingly) | |
+ | sudo dpkg -i /path/to/deb/gnucash_2.4.15-1_amd64.deb | ||
− | ==== Ubuntu 12.04 (Precise Pangolin) ==== | + | ==== Ubuntu 12.04 LTS (Precise Pangolin) ==== |
To build using the git repository first install git | To build using the git repository first install git | ||
Line 107: | Line 179: | ||
git clone git://github.com/Gnucash/gnucash.git gnucash | git clone git://github.com/Gnucash/gnucash.git gnucash | ||
which will make a git repository in a directory gnucash. | which will make a git repository in a directory gnucash. | ||
− | |||
− | |||
− | |||
− | |||
− | |||
Next install the build dependencies | Next install the build dependencies | ||
sudo apt-get build-dep gnucash | sudo apt-get build-dep gnucash | ||
and a few required or useful tools | and a few required or useful tools | ||
− | sudo apt-get install libtool swig | + | sudo apt-get install libtool swig git libgnomeui-dev xsltproc libxslt-dev doxygen |
if want to use the alternative database backends then: | if want to use the alternative database backends then: | ||
Line 153: | Line 220: | ||
sudo apt-get build-dep gnucash | sudo apt-get build-dep gnucash | ||
and a few required or useful tools | and a few required or useful tools | ||
− | sudo apt-get install libtool swig | + | sudo apt-get install libtool swig git |
if want to use the alternative database backends then: | if want to use the alternative database backends then: | ||
Line 179: | Line 246: | ||
==== Ubuntu 10.04 LTS (Lucid Lynx) ==== | ==== Ubuntu 10.04 LTS (Lucid Lynx) ==== | ||
− | |||
− | |||
First, we need install all dependencies of building GnuCash. | First, we need install all dependencies of building GnuCash. | ||
sudo aptitude build-dep gnucash | sudo aptitude build-dep gnucash | ||
− | sudo aptitude install texinfo | + | sudo aptitude install texinfo git intltool libdbi0-dev libdbd-{sqlite3,pgsql,mysql} guile-1.8 guile-1.8-dev doxygen libwebkit-dev |
Since Ubuntu/Debian doesn't have guile-1.8-slib, which is actually just a softlink to slib, we create the softlink and generate the catalog manually. | Since Ubuntu/Debian doesn't have guile-1.8-slib, which is actually just a softlink to slib, we create the softlink and generate the catalog manually. | ||
Line 193: | Line 258: | ||
sudo guile -c "(use-modules (ice-9 slib)) (require 'new-catalog)" | sudo guile -c "(use-modules (ice-9 slib)) (require 'new-catalog)" | ||
− | And then we create the directories for source code and installation, and check out source code from | + | And then we create the directories for source code and installation, and check out source code from git master |
mkdir -p ~/unstable ~/development | mkdir -p ~/unstable ~/development | ||
rm -rf ~/unstable/gnucash ~/development/gnucash | rm -rf ~/unstable/gnucash ~/development/gnucash | ||
cd ~/development | cd ~/development | ||
− | + | git clone https://github.com/Gnucash/gnucash/ gnucash | |
cd gnucash | cd gnucash | ||
Line 207: | Line 272: | ||
make all install | make all install | ||
− | If there | + | If there are no errors, we can run it: |
~/unstable/gnucash/bin/gnucash | ~/unstable/gnucash/bin/gnucash | ||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
=== Gentoo === | === Gentoo === | ||
Line 382: | Line 304: | ||
sudo yum-builddep gnucash -y | sudo yum-builddep gnucash -y | ||
− | sudo yum install texinfo | + | sudo yum install texinfo git intltool libdbi-devel libdbi guile guile-devel doxygen gtkhtml3-devel -y |
− | And then we create the directories for source code, and check out source code from | + | And then we create the directories for source code, and check out source code from git master |
mkdir -p ~/development | mkdir -p ~/development | ||
cd ~/development | cd ~/development | ||
− | + | git clone https://github.com/Gnucash/gnucash/ gnucash | |
cd gnucash | cd gnucash | ||
Line 448: | Line 370: | ||
This section describes how to build a plugin from scratch. | This section describes how to build a plugin from scratch. | ||
− | A plugin is a runtime loadable module which provides optional functions for GnuCash. | + | A plugin is a runtime loadable module which provides optional functions for GnuCash. There are a couple of plugins plus a skeleton example in src/plugins. To add your own plugin: |
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | : | ||
− | |||
− | |||
− | |||
− | |||
− | |||
+ | * Copy the example to a new plugin subdirectory: | ||
+ | cd src/plugins | ||
+ | cp -R example your-plugin-name | ||
+ | * edit Makefile.am to add your-plugin-name to the subdirs list | ||
+ | * edit configure.ac, inserting the following line near the end just before AC_OUTPUT: | ||
+ | AC_CONFIG_FILES(src/plugins/your-plugin-name/Makefile src/plugins/your-plugin-name/ui/Makefile src/plugins/your-plugin-name/glade/Makefile) | ||
+ | * edit the source files in your-plugin-name to actually do what you want, rename them to make sense, and adjust the filenames in the three Makefile.am to match. | ||
+ | * Rebuild GnuCash: | ||
+ | cd ../.. | ||
+ | ./autogen.sh | ||
+ | ./configure --whatever options you usually use | ||
+ | make | ||
+ | make install | ||
* to force GnuCash to load the plugin upon start | * to force GnuCash to load the plugin upon start | ||
− | echo '(gnc:module-load "gnucash/plugins/ | + | echo '(gnc:module-load "gnucash/plugins/your-plugin-name" 0)' >> ~/.gnucash/config.user |
− | + | The result will be your new plugin being available in the Tools menu, or wherever you added it in the UI file. | |
==Microsoft Windows== | ==Microsoft Windows== | ||
Compiling GnuCash in Windows is possible, but much more difficult than in linux. For details, see [[Windows|GnuCash on Microsoft Windows]]. | Compiling GnuCash in Windows is possible, but much more difficult than in linux. For details, see [[Windows|GnuCash on Microsoft Windows]]. |
Revision as of 20:35, 7 January 2016
Contents
General Instructions
Disclaimer
This page deals with building the developers version of GnuCash from the Git repository. If you are searching instructions for the stable version, you should read GnuCash#Installation.
This page deals also not with optional modules of third parties like the Perl module Finance::Quote.
Get and Configure the Sources
For the very latest source code, get the sources from Git or use the latest release source file of type gnucash-<version>.tar.gz from Sourceforge. Do not attempt to use tarballs from GitHub. Examine the Dependencies wiki page and the README.dependencies file for the list of build dependencies for your distribution, the README.git file for notes on compiling gnucash, and the HACKING file for notes on hacking the code.
Here are the basic steps one might end up taking:
1. Change to gnucash directory
cd gnucash
2. If this code was retrieved from Git, generate the configure script (otherwise skip this step)
./autogen.sh
3. Look at available configure options
./configure --help
- (Note: There are issues with the guile configuration of slib which will cause configure to fail on many distributions. See: #slib Issues)
4. For an "in-tree" build (where the compiled files are located in the same directories as the source code files), run configure with the appropriate options. Alternatively, create a separate build directory as explained below. Some example options for configure might look as follows
./configure --prefix=/opt/gnucash-devel \ --enable-debug --enable-doxygen \ --enable-error-on-warning --enable-compile-warnings \ [--enable-ofx [...]]
- --prefix
- Where should the package be installed? If you install for test purposes, you might consider to install it below your home directory to avoid sudoing. You should never use the same path as you distribution!
5. Compile and install
make
- optional - if you changed something in the sources:
make check
- If your prefix was below $HOME:
make install
- else
sudo make install
- Sudo will ask you for the administrator password.
6. Run
/opt/gnucash-devel/bin/gnucash [options]
- Again use the option --help to see a list.
Using separate build directory
It is possible, and even preferable, to separate the directories containing source code, build files, and installed files.
To build in another directory, cd to it before starting, then call the configure script by the relative path. For example:
cd gnucash ./autogen.sh
These steps were identical to the description above. Now the part which is different:
mkdir build # Create the separate build directory cd build
From within the build directory, you now have to call configure by its relative path. In this example, this is
../configure --prefix... # and all the other options
Then you can run make, and make install as normal.
Reverse commands
In case you dislike your installation, run from your build directory
[sudo] make uninstall
to remove it, before you change relevant options like the prefix.
To clean up your build directory, run
make clean
If you use a separate build directory, you can remove its content instead.
In some cases, that might not be sufficient, then clean your git gnucash directory with
git clean -f
To remove everything not part of the repo, including directories and ignored files, run
git clean -fdx -e /.project -e /.cproject -e /.autotools -e /.settings/
Note: The exceptions are only necessary for Eclipse users. Else all their project information would be lost.
In this case you will have to start with ./autogen-sh again.
Distro-specific Information
See the README.dependencies file for library dependency notes. Also check out the dependencies page.
Slackware
Slackware installation is covered on this page.
Debian
If you are lucky, running
aptitude build-dep gnucash
will install everything you need to build gnucash.
On Debian, the packages you'll probably need are (among many others):
guile-1.6-dev swig libgnome2-dev libgnomeui-dev goffice-0-dev libgsf-1-dev libgtkhtml3.2-dev (3.6, 3.8, or 3.14 will also do) libofx-dev (to enable ofx support) libaqbanking16-dev (to enable aqbanking support. Don't use the newer libaqbanking20-dev - see AqBanking#Compatibility) postgresql-dev (to enable sql support)
If you are building from git, you will also need the following installed before running autogen.sh:
automake intltool libtool guile-1.6-dev
For the 2.0-branch of GnuCash you need additionally:
libgwrapguile-dev OR guile-g-wrap
If you see the error "<unnamed port>: no code for module (g-wrap gw standard)" at runtime, see this particular FAQ.
Ubuntu
Ubuntu releases are supported for various lengths of time; Wikipedia has a handy chart showing which versions are still supported.
Note: Dear Ubunteros, please do not copy and paste whole paragraphs. Instead adjust single sections in the form
- Version x and newer:
- do this
- Version x-1 and before:
- do that.
- Can someone of you clean up this chapter and later remove this note?
Compiling Newer Ubuntu Packages on an Older Release ("self-backporting")
If you are on an older version of Ubuntu (or Debian for that matter) such as Trusty 14.04 LTS, you may be able to compile a newer Ubuntu or Debian version yourself (essentially backporting it yourself).
If the newer package is available in Utopic 14.10, add a line in your /etc/apt/sources.list (or for newer versions of Ubuntu, include a new file in the /etc/apt/sources.list.d/ directory) with the correct format. For Utopic, the line would be:
deb-src http://archive.ubuntu.com/ubuntu utopic main restricted universe
You want the version (Utopic in above example) to be newer than the system release you have installed. Then you can use the following lines to compile and install whatever software version is in the newer Ubuntu release, "backporting" the newer software to your older release of Ubuntu.
cd ~/src/ sudo aptitude update sudo apt-get install build-essential fakeroot sudo apt-get build-dep gnucash apt-get --compile source gnucash sudo dpkg -i *.deb
Easy as 1-2-3!*
- If
apt-get build-dep
fails on the gnucash packages with a message like "E: Build-Depends dependency for gnucash cannot be satisfied because the package XXXXX cannot be found" then that means you need additional updated libraries on your system in order to backport the software. Unless you know there are only one or two new libraries needed, it's most likely MUCH easier just to build GnuCash from source. (See directions below.)
- If dpkg -i *.deb fails because it lists a bunch of dependencies (this happens if you've never installed gnucash before) the easiest way to get apt to bring them in is using -f (fix broken) install:
sudo apt-get -f install
Ubuntu 14.04 LTS (Trusty Tahr)
To build from the source tarball download the source code tarball from http://www.gnucash.org/download.phtml and extract to an appropriate directory.
Next install the build dependencies
sudo apt-get build-dep gnucash
(On a fresh install I also needed to purge guile-2.0 and install these packages as well follow the guide below for issues with slib)
sudo apt-get purge guile-2.0 sudo apt-get install slib libgnomeui-common libgnomeui-dev guile-1.8 guile-1.8-dev checkinstall
if want to use the alternative database backends then:
sudo apt-get install libdbd-{sqlite3,pgsql,mysql}
In a terminal cd to the gnucash directory and run
./configure --prefix=/path/to/install/gnucash/to --enable-compile-warnings --with-html-engine=webkit make sudo checkinstall
The prefix might be, for example,
--prefix=/usr/bin/gnucash2.4
Running checkinstall will ask you some options on how the package is named, etc. This will produce a .DEB which you can then simply install (adjust the path/filename accordingly)
sudo dpkg -i /path/to/deb/gnucash_2.4.15-1_amd64.deb
Ubuntu 12.04 LTS (Precise Pangolin)
To build using the git repository first install git
sudo apt-get install git
then in an appropriate directory run
git clone git://github.com/Gnucash/gnucash.git gnucash
which will make a git repository in a directory gnucash.
Next install the build dependencies
sudo apt-get build-dep gnucash
and a few required or useful tools
sudo apt-get install libtool swig git libgnomeui-dev xsltproc libxslt-dev doxygen
if want to use the alternative database backends then:
sudo apt-get install libdbd-{sqlite3,pgsql,mysql}
In a terminal cd to the gnucash directory and checkout the version that you want, so to get the latest 2.4 branch version:
git checkout 2.4
or to build a released version, for example:
git checkout 2.4.9
Then to build it
./autogen.sh ./configure --prefix=/path/to/install/to/gnucash --enable-compile-warnings --with-html-engine=webkit --disable-error-on-warning make sudo make install
The prefix might be, for example,
--prefix=/usr/bin/gnucash2.4
Then to run it, assuming there were no errors
/usr/bin/gnucash2.4/bin/gnucash
Ubuntu 11.10 (Oneiric Ocelot)
To build using the git repository first install git-core
sudo apt-get install git-core
then in an appropriate directory run
git clone git://github.com/Gnucash/gnucash.git gnucash
which will make a git repository in a directory gnucash.
The main branch in git is conventionally named master, whereas in this repository it is named trunk (due to the fact that it is derived from a subversion repository I believe). This is not a problem but if you would rather have it named master then cd into the gnucash directory and
git branch -t master refs/remotes/origin/trunk git checkout master
Next install the build dependencies
sudo apt-get build-dep gnucash
and a few required or useful tools
sudo apt-get install libtool swig git
if want to use the alternative database backends then:
sudo apt-get install libdbd-{sqlite3,pgsql,mysql}
In a terminal cd to the gnucash directory and checkout the version that you want, so to get the latest 2.4 branch version:
git checkout 2.4
or to build a released version, for example:
git checkout 2.4.7
Then to build it
./autogen.sh ./configure --prefix=/path/to/install/to/gnucash --enable-compile-warnings --with-html-engine=webkit make sudo make install
The prefix might be, for example,
--prefix=/usr/bin/gnucash2.4
Then to run it, assuming there were no errors
/usr/bin/gnucash2.4/bin/gnucash
Ubuntu 10.10 (Maverick Meerkat)
Follow the steps described for #Ubuntu 10.04 LTS (Lucid Lynx).
Ubuntu 10.04 LTS (Lucid Lynx)
First, we need install all dependencies of building GnuCash.
sudo aptitude build-dep gnucash sudo aptitude install texinfo git intltool libdbi0-dev libdbd-{sqlite3,pgsql,mysql} guile-1.8 guile-1.8-dev doxygen libwebkit-dev
Since Ubuntu/Debian doesn't have guile-1.8-slib, which is actually just a softlink to slib, we create the softlink and generate the catalog manually.
cd /usr/share/guile/1.8 sudo ln -s ../../slib slib sudo guile -c "(use-modules (ice-9 slib)) (require 'new-catalog)"
And then we create the directories for source code and installation, and check out source code from git master
mkdir -p ~/unstable ~/development rm -rf ~/unstable/gnucash ~/development/gnucash cd ~/development git clone https://github.com/Gnucash/gnucash/ gnucash cd gnucash
Then, we build it by following commands:
./autogen.sh ./configure --prefix=$HOME/unstable/gnucash --enable-debug --enable-doxygen --enable-error-on-warning --enable-compile-warnings make all install
If there are no errors, we can run it:
~/unstable/gnucash/bin/gnucash
Gentoo
Gentoo instructions can be found on Gnucash-svn installation on Gentoo.
Mac OS X
Mac OS X instructions can be found on MacOSX/Quartz (This is the procedure used for building the binary packages) or gnucash installation from source on Mac OS X.
Fedora
Fedora Core 5
At least the following packages are required to build GnuCash from source on FC5:
libtool-ltdl-devel guile-devel g-wrap-devel libgnomeprint22-devel libgnomeprintui22-devel gtkhtml3-devel
Suggested way to satify all requirements:
# yum install libtool-ltdl-devel guile-devel g-wrap-devel libgnomeprint22-devel \ libgnomeprintui22-devel gtkhtml3-devel
Please note that while the configure script only checks for GtkHTML up to 3.8, recent versions of GtkHTML ship with "libgtkhtml-3.8.pc" so yes, you CAN use gtkhtml3-3.10 on FC5.
Fedora 13
On Fedora 13, the build instructions are very similar to the ones for Ubuntu 10.04 (above). First, we need install all dependencies of building GnuCash.
sudo yum-builddep gnucash -y sudo yum install texinfo git intltool libdbi-devel libdbi guile guile-devel doxygen gtkhtml3-devel -y
And then we create the directories for source code, and check out source code from git master
mkdir -p ~/development cd ~/development git clone https://github.com/Gnucash/gnucash/ gnucash cd gnucash
Then, we build it by following commands:
./autogen.sh ./configure --prefix=$HOME/unstable/gnucash --enable-debug --enable-doxygen --enable-error-on-warning --enable-compile-warnings make all install
If there are no errors, we can run it:
~/unstable/gnucash/bin/gnucash
slib Issues
Ubuntu Hardy and Intrepid, and if the mailing lists are to be believed, many other distributions as well, produce the following error when running the configure script:
- configure:27495: checking for SLIB support
- configure:27509: error:
- Cannot find SLIB. Are you sure you have it installed?
- See http://bugzilla.gnome.org/show_bug.cgi?id=347922
- ...
This is not a problem with gnucash! The issue seems to be that the slib installation does not properly configure guile. Two items need to be fixed: a guile initialization file has an incorrect path, and the initialization of the slib catalog is not done. On Ubuntu, the initialization file is /usr/share/guile/1.8/ice-9/slib.scm. There is no guarantee that this will be the same on another distribution. This file references the guile.init file supplied by slib to hook slib into guile. Look in the file to find:
- (load-from-path "slib/guile.init")
This line must be changed to reflect the correct location of the guile.init file:
- (load-from-path "/usr/share/slib/init/guile.init")
This path is correct for Ubuntu. It will probably not be the same on other distributions. Once this is fixed, slib must be invoked from guile to initialize the catalog:
- sudo guile -c "(use-modules (ice-9 slib)) (require 'printf)"
Then, if there were no errors, the returned status will be "0". We can check this by echoing the status variable from the environment:
- echo $?
Which should return 0. If it does, then the configure script should now get past the section which checks for slib. Note that since standard users probably do not have write permissions to the slib and guile directories, the catalog initialization will fail unless you sudo! I recently discovered (7/1/09) that upgrading Ubuntu from Hardy to Intrepid silently breaks slib by undoing this change, forcing you to repeat the fix.
Finally, there are several additional suggestions that can be gleaned from others who have had this problem. I've listed these below in case they are needed on some distributions. As far as I can tell, on Ubuntu at least, all of these additional actions are superfluous.
- Environment Strings:
- export SCM_INIT_PATH=/usr/share/slib/init/guile.init
- export SCHEME_LIBRARY_PATH=/usr/share/slib
- export GUILE_LOAD_PATH=/usr/share/guile/site /usr/share/guile/1.8 /usr/share/guile
- Symbolic Links:
- ln -s /usr/share/guile/1.8/ /usr/share/guile/site
- ln -s /usr/share/slib/ /usr/share/guile/1.8/slib
Obviously, the paths here refer to the Ubuntu install. Yours may differ.
Tutorial on Plugins
This section describes how to build a plugin from scratch.
A plugin is a runtime loadable module which provides optional functions for GnuCash. There are a couple of plugins plus a skeleton example in src/plugins. To add your own plugin:
- Copy the example to a new plugin subdirectory:
cd src/plugins cp -R example your-plugin-name
- edit Makefile.am to add your-plugin-name to the subdirs list
- edit configure.ac, inserting the following line near the end just before AC_OUTPUT:
AC_CONFIG_FILES(src/plugins/your-plugin-name/Makefile src/plugins/your-plugin-name/ui/Makefile src/plugins/your-plugin-name/glade/Makefile)
- edit the source files in your-plugin-name to actually do what you want, rename them to make sense, and adjust the filenames in the three Makefile.am to match.
- Rebuild GnuCash:
cd ../.. ./autogen.sh ./configure --whatever options you usually use make make install
- to force GnuCash to load the plugin upon start
echo '(gnc:module-load "gnucash/plugins/your-plugin-name" 0)' >> ~/.gnucash/config.user
The result will be your new plugin being available in the Tools menu, or wherever you added it in the UI file.
Microsoft Windows
Compiling GnuCash in Windows is possible, but much more difficult than in linux. For details, see GnuCash on Microsoft Windows.