- Fixed exit code passing (sys.exit only quits thread, does not pass exit code) - Converted to Python3
|3 days ago|
|Artwork||2 years ago|
|Postgres||4 weeks ago|
|Postgres.xcodeproj||3 months ago|
|PostgresLoginHelper||2 years ago|
|PostgresMenuHelper||2 months ago|
|buildscripts||3 days ago|
|docs||3 weeks ago|
|src-9.4||1 week ago|
|src-9.5||1 week ago|
|src-9.6||1 week ago|
|src-10||1 week ago|
|src-11||1 week ago|
|src-12||1 week ago|
|.gitignore||1 year ago|
|LICENSE||7 years ago|
|README.md||4 weeks ago|
The easiest way to run PostgreSQL on your Mac
You can download recent versions of Postgres.app from the Postgres.app website.
Older versions and pre-releases are available in the releases section on GitHub.
Documentation is available at http://postgresapp.com/documentation, as well as from the “Open Documentation” menu item in Postgres.app.
Postgres.app consists of separate parts:
The PostgreSQL binaries, including extensions and a bunch of command line tools. You can find the binaries in /Applications/Postgres.app/Contents/Versions
The Postgres.app user interface, written in Swift. This is the native Mac app that you see when you double click Postgres.app in the Finder.
For compatibility reasons we build the different parts on different versions of macOS.
the binaries for PostgreSQL 9.4 - 10 are built on macOS 10.10
the binaries for PostgreSQL 11 - 12 are built on macOS 10.12 with Xcode 8.3.3
the GUI is built on macOS 10.15 with Xcode 10.1
It is of course possible to use other versions of macOS / Xcode (see details below), but those are the environments we use.
If you want to work on the user interface only, you don't have to re-compile the binaries yourself. By default, the buildscript for Postgres.app just copies the binaries from /Applications/Postgres.app/Contents/Versions
So just make sure you have a copy of Postgres.app in your applications folder. Open the XCode file and start hacking!
Tools required for building the GUI:
Currently it is not possible to use Xcode 11 because Postgres.app is written in Swift 3. Any help migrating to Swift 5 would be greatly appreciated!
If you want to build your own versions of all the PostgreSQL binaries, you have slightly more work to do.
The directories src-10, src-11 and src-12 each contain a makefile that downloads and builds all the binaries.
If you have all the prerequisites installed (see below), you can just type
The makefile will download and build many gigabytes of sources. The default target (
all) builds postgresql, postgis, plv8, and wal2json.
PostGIS and especially plv8 take a long time to build, so if you don't need them, type
make postgresql instead.
The makefile will install all products in
/Applications/Postgres.app/Contents/Versions/xx (xx is the major version of PostgreSQL).
So for best results, make sure that directory is empty before starting the build.
If you want to change the version number of any of the dependencies, edit the makefile (all version numbers are specified at the top).
You can use the
-j option (eg.
make -j 3 postgresql) for parallel builds.
My recommendation is to use one more job than the number of logical processors you have.
Since my macOS 10.12 VM is limited to 2 virtual CPUs, I use
However, parallel builds make debugging problems a lot harder, so don't use them when something doesn't work.
Always check the exit code of make to see if any errors occurred, eg.
make -j 3 || echo "Build failed with exit code $?"
At the very least, you need the following:
For building PostGIS, you also need
By default, PostgreSQL is built with documentation. To build the docs, you need:
The quickest way to install all the dependencies is with MacPorts. Install MacPorts, then type:
sudo port install autoconf automake pkgconfig docbook-dsssl docbook-sgml-4.2 docbook-xml-4.2 docbook-xsl-nons libxslt openjade opensp
It may also be possible to install those using homebrew, but I'm not sure if they have all the required packages.
Postgres.app bundles the PostgreSQL binaries inside the application package. When you first start Postgres.app, here's what it does:
initdb -D DATA_DIRECTORY -EUTF-8 --locale=XX_XX.UTF-8
pg_ctl start -D DATA_DIRECTORY -w -l DATA_DIRECTORY/postgres-server.log
On subsequent app launches, Postgres.app only starts the server.
Note that Postgres.app runs the server as your user, unlike other installations which might create a separate system user named
When you quit Postgres.app, it stops the server using the following command:
pg_ctl stop -w -D DATA_DIRECTORY
Postgres.app also includes useful command line utilities (note: this list may be outdated):
See the documentation for more info.
If you find a bug, please open an issue.
Postgres.app is maintained by Jakob Egger.
Postgres.app is released under the PostgreSQL License. See LICENSE for additional information.