Software FAQ

Common questions about my Unix ports.

How do I know what versions are installed?

  • FrameworksGet Info on the framework folder. But, older frameworks will only show the source version, and not the build version, so open the Info.plist inside the framework package in a text editor and look at the CFBundleVersion key.
  • GRASSGet Info on the application. (only shows the source version in old versions)
  • QgisGet Info on the application. Only shows source version.
  • PHP — Use the testphp.php as specified in the PHP readme to check the source version and build date. Or, Get Info on the receipt in /Library/Receipts will show a condensed build version.
  • MapServer — With PHP-MapScript installed, testphp.php from the MapServer package will only show the source version. For recent framework builds, Get Info on the framework will show the full build version. For older framework builds and non-framework builds, Get Info on the receipt in /Library/Receipts will show a condensed build version.
  • Postgres/usr/local/pgsql/bin/postgres --version in a Terminal will only show the source version. Get Info on the receipt in /Library/Receipts will show a condensed build version.
  • Postgres extensionsGet Info on the receipt in /Library/Receipts is the only way.

Can I move or rename GRASS?

Yes. BUT, if you intend to use GRASS with Qgis you should leave GRASS alone. Due to the way GRASS libraries are linked to Qgis, the GRASS plugin may not work properly. This may change for the better in the future.

Also, if you move or rename GRASS, documentation will not be available from Apple’s Help Library. Help will still work from within GRASS.

Can I use Python from or Anaconda with your software builds?


Starting with QGIS 3/GDAL 2.2 the Python 3 is required.  Most Python modules (including all those I built for the system Python in the past) are now available from pip.  Any required by QGIS 3 that are not available from pip are included in the QGIS installer as a local pip install.

For any older QGIS, GDAL and Python module build, the Python capabilities (binary extensions) of my builds are built for the system Python 2.x.

A binary Python extension technically should be usable with any compatible Python. As long as a third-party Python is the first in your PATH (it should be after installation), it should work. This is untested.

QGIS’ Python capabilities are hardwired to the system Python (for QGIS 2.x) or the Python (for QGIS 3), because it links the Python framework to provide its own internal Python interpreter.

The Postgres pl/python extension is also an internal interpreter, and is hardwired for the system Python (all Postgres versions).

It’s not working

If an application suddenly quits, or parts of it won’t run (ie modules or the GUI in GRASS), logs are very helpful. If you get the OS X “Suddenly quit” dialog, cancel or “don’t send” to Apple., in your Applications/Utilities folder, is easier to use to browse the crashlog, and check other logs.

First look at the console log. If it’s a system application, like Postgres or MapServer/PHP, look at the system log instead (you need administrator privileges). Usually errors about missing or incompatible libraries or frameworks will show up here and you won’t need to dig further.

If that doesn’t help, it will probably refer you to a crash log. Find that in ~/Library/Logs/CrashReporter (or /Library/Logs/CrashReporter for system apps) in the log list. On Leopard, each crash has its own log file, but on Tiger and below each application has a single log file for all crashes, the last crash will be at the end of the file.

The most useful info is the header at the top with system info and the “exception”, and the thread trace for the thread that crashed (some applications may have many threads).

The Thread State, next, may be helpful, but I don’t really know how to interpret it.

The Binary Images Description can be useful, but it can also be very long.

If it’s not immediately apparent what is wrong, send me the crashlog (or the relevant lines from the console log). Hopefully I can figure out what went wrong.