macOS/MacPortsDetail

From GnuCash
(Redirected from MacOSX/MacPortsDetail)
Jump to: navigation, search

This page provides further detail on compiling and installing GnuCash using MacPorts. For the overview of Mac installation options, see macOS Installation.


MacPorts installation in detail

Install the latest Developer Tools from Apple - a.k.a. XCode

  1. Download the latest version from http://developer.apple.com/ (free registration is required).
  2. You don't need to install all of the packages - use the 'Customize' button in the installer and only select:
    1. Developer Tools Software
    2. gcc 4.0
    3. gcc 3.3
    4. Software Development Kits (installed with Developer Tools)
    5. Unix Development Support (includes gcc)

(As of Dec 2008, you may need gcc4.2 as well; and I'm not sure if gcc3.3 is even extant any more. So a standard install may be the safest route -- that definitely works fine.)

Install MacPorts

  1. Download and install the latest version of MacPorts
  2. Make sure you update all the package descriptions so you can get the latest GnuCash:
 sudo port selfupdate

Using MacPorts to install a recent stable release of GnuCash

Once that's done, you can issue the following command to install GnuCash - this will take you quite a while, as the software will be downloaded, then compiled and installed. It took a good 6 hours on my iBook. The whole installation of MacPorts with GnuCash adds up to about 1GB.

$ sudo port install gnucash

If this works for you, you can skip the rest of this section (but you may want to look at the Quartz instructions below). Congratulations!

As of December 2008, this was up-to-date with GnuCash-2.2.8, and the font problems appeared to be gone; but I have left the discussion below in case it still crops up for someone else.

At an earlier date, there was a report that on a fresh install of MacPorts, the installation did stall with the 'scrollkeeper' package, but you can just run the same install command again. So if the installation does fail on one of the required packages, try re-running the same install command again before looking further.

As of August 2008, Leopard 10.5.4, and GnuCash-2.2.5 the above still works. But the fonts are too small to be useful on my 15" intel powerbook.

There may be an easier way to change fonts in a default install, but this worked--

Install the X11-2.3.0.pkg from Xquartz.

Log out and back in for the new X11 to take effect.

Change the startx script to use bigger fonts by default.

sudo pico /usr/X11/bin/startx

In the startx script, change defaultserverargs=" " --to-- defaultserverargs="-dpi 96"

Close any X11 that is running.

At the macOS Terminal.app window enter the command "gnucash"

Using MacPorts to install the native Quartz version of GnuCash

As of December 2008, MacPorts can also handle compiling and building the native Quartz version of GnuCash, which does not require or invoke X-Windows at all. To configure MacPorts to compile GnuCash in this fashion, you need only insert one additional step after installing MacPorts and before executing "sudo port install gnucash" (or any other port install commands for that matter):

Edit the file /opt/local/etc/macports/variants.conf and add the following four lines:

+no_static
+no_x11
-x11
+quartz

Then save the file, and now you can execute "sudo port install gnucash". You will probably receive a message about dbus at the end of the installation. Ignore it. Instead restart your computer.

If the restart does not work uninstall GnuCash, then install dbus separately, run the command it tells you to for your user (not using sudo). Afterwards reinstall GnuCash.

$ sudo port uninstall gnucash
$ sudo port install dbus
$ launchctl load /Library/LaunchAgents/org.freedesktop.dbus-session.plist
$ sudo port install gnucash

If you have any trouble with the qt3 or aqbanking ports, and you don't need HBCI support (mostly for German electronic banking access), try the following:

$ sudo port clean gnucash
$ sudo port install gnucash +without_hbci

If you have already installed GnuCash or components such as gtk2 without these modifications to variants.conf, the road is bumpier. It is not really possible to mix X11-enabled and X11-free versions of these components in the MacPorts package system at the moment. If you can afford to do it, completely uninstalling MacPorts altogether and doing a fresh clean install from scratch is the most reliable way to get a working Quartz-native GnuCash. If you have other MacPorts ports installed that you can't blow away, you can try the following approach:

$ sudo port uninstall --follow-dependents cairo
$ sudo port uninstall --follow-dependents dbus

Note that these commands may uninstall some of your favorit programs other than gnucash, if they also depend on cairo or dbus. But that is unavoidable, as two different versions (X11 vs. Quartz) of these two packages cannot coexist. Once the above uninstalls have succeeded, you can edit variants.conf as described above, and then do "sudo port install gnucash" and hopefully enough will have been cleared away for the new build and install to go cleanly and produce a working X11-free version of GnuCash.

Note that once you have a working GnuCash installation under MacPorts, upgrading when the port for a new release has been published is easy: simply do

$ sudo port selfupdate
$ sudo port upgrade gnucash

But this process will not change an X11 install to a Quartz one or vice-versa -- it will simply update your existing install to the latest ported release of GnuCash, leaving its type the same.

Potential Problems and their Solutions

Minimalistic Installation

The default installation of GnuCash using MacPorts enables everything, including things you might not need, or things that might even cause trouble. In particular, a few people have reported problems installing libraries required for OFX.

The following command tries to install a minimalistic version of GnuCash:

$ sudo port install gnucash +without_hbci +without_ofx +without_quotes

Missing LibOFX

Note (2007-03-21): When I used the above command it got part way through and then failed with the error message: *** LibOFX>=0.8.0 is required for backend "aqofxconnect". To get around this problem I simply installed libofx manually first with:

$ sudo port install libofx

and then retyped sudo port install gnucash and things proceeded smoothly.

guile 1.8.1

MacPorts has updated its guile port to 1.8.1. While this is certainly nice, guile 1.8.1 does not work with GnuCash out-of-the box. :-(

If you have installed GnuCash using MacPorts before March 29, 2007, and want to upgrade to a more recent version, you will have to do the following:

sudo port uninstall gnucash
sudo port -f uninstall g-wrap
sudo port -f uninstall slib-guile
sudo port -f uninstall guile
sudo port clean g-wrap16 slib-guile16 guile16   # if you've already tried things on your own
sudo port selfupdate
sudo port install gnucash

These commands will remove those guile-related ports that now refer to guile 1.8.1 from your system. sudo port selfupdate retrieves current building instructions from the MacPorts server. sudo port install gnucash will then pull in guile16, slib-guile16 and so on, thus referring to known-good software versions.

If your original install of GnuCash using MacPorts was sometime after March 28, 2007, things should Just Work (tm), and you can ignore this section. :-)

Current developer version

MacPorts has a port to install a now quite out-of-date current developer version from the source code repository. So the current recommendation is to stick with the release port described above. The rest of this section is kept for historical reference.

If you want to try this, first follow the instructions above to install XCode and MacPorts if you haven't already done so.

If you've already installed the regular gnucash port, you will have to deactivate it:

sudo port deactivate gnucash

Then use the following command:

sudo port install gnucash-devel

For the 2.1.5 release (July 2, 2007), one needs to do the following after installing gnucash-devel:

sudo port uninstall gnucash-devel
sudo port -f uninstall slib-guile
sudo port -f uninstall guile
sudo port clean slib-guile guile    # for good measure
sudo port -f install guile16
sudo port -f install slib-guile16
sudo port -f install gnucash-devel

Compiling on your own

If you want to run a more recent version of GnuCash 2 than that found in either of the above options, you can use the following instructions. Note however that at least in the spring of 2007, the gnucash-devel port has been tracking GnuCash unstable releases (and sometimes Subversion head versions) quite closely, so be sure that gnucash-devel is not recent enough for your needs. As before, make sure you have the latest version of XCode from Apple before you start.

Prerequisites

According to the gnucash website "to install GnuCash, users will need Gnome 2, guile, slib and g-wrap" so the first steps (assuming MacPorts is installed) are simply:

$ sudo port install gnome
$ sudo port install slib-guile16
$ sudo port install g-wrap16

Note that as of GnuCash-2.1.0, swig is used instead of g-wrap, so installing the g-wrap16 port is no longer necessary for this version and later.

Note that gnome will not build with +quartz or +no_x11 variants[1].

Expect gnome to take a long time, the other two should be done relatively quickly. After installing you should see the dependencies listed as active by using this command:

$ port installed

Libraries and Includes

Now, this author didn't find the following in the MacPorts documentation, if it is there please update this information. Make sure the MacPorts libraries are available to your compiler, change these appropriately for your shell

export CPPFLAGS="-I/opt/local/include"
export LDFLAGS="-L/opt/local/lib"
export DYLD_LIBRARY_PATH="/opt/local/lib"

Note: if you experience the following error

checking pkg-config is at least version 0.16... dyld: Symbol not found: __cg_jpeg_resync_to_restart
  Referenced from: /System/Library/Frameworks/ApplicationServices.framework/Versions/A/Frameworks/ImageIO.framework/Versions/A/ImageIO
  Expected in: /opt/local/lib/libJPEG.dylib
 in /System/Library/Frameworks/ApplicationServices.framework/Versions/A/Frameworks/ImageIO.framework/Versions/A/ImageIO
./configure: line 18613: 25817 Trace/BPT trap: 5       $PKG_CONFIG --atleast-pkgconfig-version $_pkg_min_version

Try replacing the 3rd export above with

export DYLD_FALLBACK_LIBRARY_PATH="/opt/local/lib"

See this thread for more info.

Note: If you have multiple instances of macports installed, you may have to add the following lines:

export PKG_CONFIG_PATH="/<macport_path>/lib/pkgconfig:/<macport_path>/share/pkgconfig:$PKG_CONFIG_PATH"
export PKG_CONFIG="/<macport_path>/bin/pkg-config"
export PATH="/<macport_path>/apache2/bin:/<macport_path>/bin:/<macport_path>/sbin:/<macport_path>/lib/qt3/bin:$PATH"

From Source

Download the gnucash-2.x.x source, extract it, read the INSTALL file. You may want to adjust the configure line to suite your preferences. This author uses the following:

$ ./configure -C --prefix=/opt/local
$ make
$ sudo make install

If configure fails due to missing libraries then first make sure you properly set the CFLAGS, CPPFLAGS and LDFLAGS variables, and then verify that you actually installed the libraries.

Problems on Panther

libgnomecups is broken on Panther which precludes gnome from building (Panther has an older version of CUPS which doesn't have cupsGetFd). Fink (which has a different tree for Panther) takes care of this by using a older version of libgnomecups.