Dependencies

From GnuCash
Jump to: navigation, search

General

This page is intended to capture various library build and runtime dependency information. The goal is to provide a more dynamic source than maint/README.dependencies/master/README.dependencies for tracking this replace data.

See Building for details on building Gnucash.

GnuCash Library Dependency Policy

GnuCash desires to only depend on library versions and packages that are practically available. Specifically, we choose to depend only on versions that have been in the major distributions for 6 months. This is motivated in part by the 1.6 release, which required a large set of relatively-recent dependencies. Specifically, as most user's (distributions) did not have the required versions packaged, it was exceedingly painful for end users to upgrade to the anticipated release, leading to a reputation that gnucash still has.


Libraries/Deps

The GnuCash dependencies are shown in the following table. The GnuCash version shown is either where a new dependency is introduced or a previous dependency ceases to be relevant.

Table of GnuCash Dependency Changes With Version from 2.4.0
GnuCash Version
Required Library 2.4.0 2.4.1 2.5.8 2.6.2 2.7.0a 2.7.3 2.7.4 3.1
gconf2 Required Required
glib2 ≥ 2.6.0 ≥ 2.6.4 ≥ 2.28.0 ≥ 2.28.0 ≥ 2.40.0 ≥ 2.40.0 ≥ 2.40.0 ≥ 2.40.0
(2.46.0 preferred)
gtk2 ≥ 2.6.0 ≥ 2.6.0 ≥ 2.24.0 ≥ 2.24.0
gtk3 ≥ 3.14.0 ≥ 3.14.0 ≥ 3.14.0 ≥ 3.14.0
guile 1.6.4 1.6.4 1.8.5 or
2.0.0
1.8.5 or
2.0.0
1.8.5 or
2.0.0
2.2.0 or
2.0.0
2.2.0 or
2.0.0
2.2.0 or
2.0.0
libgnomecanvas 2.0 2.0
libart2 ≥ 2.3.11 ≥ 2.3.11
libglade2 ≥ 2.3.6 ≥ 2.3.6
libgnomeprint2.2 ≥ 2.8.2 ≥ 2.8.2
libgnomeui2 ≥ 2.0.0 ≥ 2.0.0
libgoffice ≥ 0.4.0 ≥ 0.4.0 ≥ 0.7.0 ≥ 0.7.0
libgsf1 ≥ 1.12.2 ≥ 1.12.2
libxml2 ≥ 2.4.12 ≥ 2.4.12 ≥ 2.5.10 ≥ 2.5.10 ≥ 2.5.10 ≥ 2.5.10 ≥ 2.5.10 ≥ 2.5.10
gettext ≥ 0.19.6
libxslt Required Required Required Required
ICU Required Required Required Required
boost ≥ 1.50.0 ≥ 1.50.0 ≥ 1.50.0 ≥ 1.53.0
pango ≥ 1.8.1 ≥ 1.8.1
swig ** ≥ 1.6.7 ≥ 1.6.7 ≥ 2.0.10 ≥ 2.0.10 ≥ 2.0.10 ≥ 2.0.10 ≥ 2.0.10 ≥ 2.0.10
libgtkhtml3 one of one of
webkit one of one of 1.0 1.0
webkit2gtk3.0 / webkitgtk-3.0(Windows) Required Required Required Required
googletest/gtest/gmock 1.7.0 ≥ 1.7.0
Libraries for Options
On Line Banking and Import
aqbanking Required Required 4.0.0 4.0.0 4.0.0 4.0.0 4.0.0 4.0.0
gwenhywfar Required Required Required Required Required Required Required Required
ktoblzcheck Required Required Required Required Required Required Required Required
Database Support
libdbi Required + Required + 0.8.3 + 0.8.3 + 0.8.3 + 0.8.3 + 0.8.3 + 0.8.3 +
libdbd-mysql **** one of one of one of one of one of one of one of one of
libdbd-pgsql **** one of one of one of one of one of one of one of one of
libdbd-sqlite3 **** one of one of one of one of one of one of one of one of
OFX File Import
libofx R R 0.9.0 0.9.0 0.9.0 0.9.0 0.9.0 0.9.0
Python Bindings
python R 2.4.0 2.4.0 2.4.0 2.4.0 2.4.0 ≥ 3.2.0
Runtime libraries
isocodes Suggested Suggested Suggested Suggested Suggested Suggested Suggested Suggested
gsettings Linux: dconf/Windows: registry/MacOSX: plists *** Required Required Required Required Required
Other Libraries
cairo ≥ 0.5.0 ≥ 0.5.0
makeinfo Required Required
doxygen Required
** swig is only required if source is obtained from git, Not required for tarballs.
*** Global preferences storage. Note that the osx and windows backends are built-in in gio for their respective platforms. On linux and similar systems, the dconf package should be installed.
**** On Fedora these libraries are named libdbi-dbd-mysql, libdbi-dbd-postgresql, libdbi-dbd-sqlite

What if my distro doesn't have a required dependency?

It happens. Sometimes we need functionality that some distros decline to provide. All of our dependencies are free software and so the sources are readily available for you to download and use. If you're not on the latest version of your distro you may not have the needed versions for every dependency.

For example, OpenSuSE is believed at the time of writing to not provide GoogleTest. That happens to be the simplest of all because GnuCash only needs the sources, which can be cloned from [Github]. Just put it somewhere convenient and add

 -DGTEST_ROOT=/path/to/googletest/googletest
 -DGMOCK_ROOT=/path/to/googletest/googlemock

to your CMake arguments when building GnuCash.

In other cases you may have a dependency but not at the required version. First look at the available repositories for your distro's package manager. For Debian based distros there's [GetDeb], for RPM based ones try [RPMFind]. Failing that you may have to download and build the dependency from source. If it's a system dependency as well, for example glib or gtk+, you'll want to install it into a prefix not on the built-in search paths and then add the prefix to PKG_CONFIG_PATH and the library path to LD_LIBRARY_PATH so that CMake and GnuCash can find the updated versions.

Return to:

Installing Dependencies

Building On Linux

Building GnuCash