• Stars
    star
    288
  • Rank 141,017 (Top 3 %)
  • Language
    Ruby
  • Created over 11 years ago
  • Updated 10 months ago

Reviews

There are no reviews yet. Be the first to send feedback to the community and the maintainers!

Repository Details

🐘 PostgreSQL formulae for the Homebrew package manager

Homebrew PostgreSQL things

These formulae allow installing multiple versions of PostgreSQL in parallel. This is similar to what you can do on certain Linux distributions, for example Debian.

To install something, first brew tap petere/postgresql and then brew install <formula>. Since there might be name overlaps with core Homebrew formulae, you should use fully qualified formula names like brew install petere/postgresql/postgresql-common.

Build Status

Details

Since PostgreSQL major releases have incompatible data directories and other occasional incompatibilities, it is useful for many developers to keep several major versions installed in parallel for development, testing, and production. So far, Homebrew had inconsistent support for that and did not provide the full range of supported major versions. This tap provides versioned formulae named [email protected], [email protected], etc. that you can install in parallel. Technically, these are "keg-only", which has the nice side effect that they are automatically installed in side-by-side directories /usr/local/opt/[email protected]/ etc.

To use the programs installed by these formulae, do one or more of the following, in increasing order of preference:

  • Call all programs explicitly with /usr/local/opt/[email protected]/bin/.... This will be boring in the long run.
  • Add your preferred /usr/local/opt/[email protected]/bin etc. to your path. Preferably to the front, to come before the operating system's PostgreSQL installation. This will work alright, but depending on your setup, it might be difficult to get everything on the OS to see the same path.
  • brew link -f the [email protected] formula you prefer to use.
  • Install the postgresql-common package (see below).

The versioned formulae can be installed alongside the main postgresql formula in Homebrew. But there will be a conflict if you do brew link -f or install postgresql-common, so in those cases you have to uninstall the main postgresql package first. This is not a problem, however, because the versioned packages provide the same functionality.

Build options

The standard postgresql formula in Homebrew is missing a number of build options and also has a number of build options that I find useless. These formulae enable all configure options that macOS can support, but also remove a number of Homebrew-level build options, to reduce complexity. I have also dropped supported for legacy macOS concerns, such as 32-bit Intel and PowerPC and really old macOS releases. Mainly because I can't test that anymore, YMMV.

Old versions

I keep old and deprecated versions of PostgreSQL in this repository instead of removing them, because they are sometimes useful to have handy, and also for curiosity. But note that over time, the oldest versions will stop building and/or running on newer operating system versions. The PostgreSQL major versions that are still maintained upstream are expected to work, but anything beyond that is best-effort and YMMV.

postgresql-common cluster manager

postgresql-common is a port of the postgresql-common package from Debian, which contains programs that help manage these multiple versioned installations, and programs to manage multiple PostgreSQL instances (clusters). The port a bit experimental, but it works.

See /usr/local/opt/postgresql-common/README.Debian to get started. If you have used Debian or Ubuntu before, you'll feel right at home (I hope).

The general idea is that for server-side operations you use the special wrapper scripts pg_createcluster, pg_dropcluster, pg_ctlcluster, and pg_lsclusters instead of initdb and pg_ctl. The scripts take version numbers and instance names (which map to directory names). For example:

pg_createcluster 9.6 test
pg_ctlcluster 9.6 test start

See the respective man pages for details.

For client-side operations, to usual tools such as psql and pg_dump are wrapped to automatically use the right version for the instance they are connecting to, so you usually don't need to do anything special. See the man page pg_wrapper for details.

Extensions

To install extensions, I recommend Pex. It has support for multiple PostgreSQL installations and can easily support to the installation scheme used by these packages. Example:

pex -g /usr/local/opt/[email protected] install ip4r

More Repositories

1

pguri

uri type for PostgreSQL
C
297
star
2

pguint

unsigned integer types extension for PostgreSQL
Python
231
star
3

plsh

PL/sh is a procedural language handler for PostgreSQL that allows you to write stored procedures in a shell of your choice.
C
154
star
4

pex

light-weight package manager for PostgreSQL
Shell
95
star
5

postgresqlfs

FUSE driver to access PostgreSQL databases as a file system
C
80
star
6

pgemailaddr

email address type for PostgreSQL
C
43
star
7

git-whoami

essential Git command
Shell
24
star
8

pgtrashcan

PostgreSQL trash can
C
23
star
9

homebrew-auto-update

automatically runs brew update
Shell
22
star
10

plxslt

XSLT procedural language for PostgreSQL
C
18
star
11

pgpcre

PCRE functions for PostgreSQL
C
17
star
12

getent-osx

simplistic getent tool emulation for OS X
Perl
14
star
13

pex-packages

package library for pex (https://github.com/petere/pex)
13
star
14

veung

visual explain ΓΌber-next generation (for PostgreSQL)
Python
12
star
15

postgresql-common

PostgreSQL database-cluster manager β€” You might be interested in https://github.com/petere/homebrew-postgresql as well.
Perl
12
star
16

homebrew-sgml

SGML tools for Homebrew
Ruby
10
star
17

autopex

PostgreSQL extension installation magic
C
9
star
18

pglockviz

tool to visualize PostgreSQL locks
Python
8
star
19

plpydbapi

Python DB-API interface on top of PL/Python
Python
7
star
20

pgbloomagg

Bloom filter aggregate function for PostgreSQL
PLpgSQL
7
star
21

logging-hooks-presentation

material for presentation about logging hooks in PostgreSQL
Puppet
7
star
22

adventofcode-2020

https://adventofcode.com/2020
Raku
6
star
23

pgci

continuous integration service for PostgreSQL
Python
4
star
24

markdown-formatter-for-chrome

extension for Google Chrome that formats Markdown text as HTML
JavaScript
4
star
25

pgvihash

version-independent hash functions for PostgreSQL
C
4
star
26

emacs-save-packages

save and restore installed ELPA packages
Emacs Lisp
4
star
27

pglogjsonsrvgo

pg_logforward JSON consumer written in Go
Go
2
star
28

emacs-ssh-file-modes

Emacs major modes for ssh authorized_keys and known_hosts files
Emacs Lisp
2
star
29

peter.eisentraut.org

Peter Eisentraut's blog
Ruby
2
star
30

debnorepo

find installed Debian packages without repository
2
star
31

pglibuuid

PostgreSQL wrapper for libuuid (obsolete, use PostgreSQL's configure --with-uuid=e2fs for equivalent functionality)
C
2
star
32

sgml-spell-checker

SGML spell-checking package
Shell
2
star
33

pgcatviz

generate schema diagram of PostgreSQL system catalogs using Graphviz
Python
2
star
34

my-gettext-scripts

some small wrapper scripts around gettext tools
Shell
1
star
35

updatable_views

updatable views extension for PostgreSQL
C
1
star
36

samsung-q45-support

support for Samsung Q45 laptops on Debian/Ubuntu
1
star
37

sgml-spell-checker-word-lists

additional word lists to use with sgml-spell-checker
Makefile
1
star
38

plpylint

runs pylint over PostgreSQL PL/Python functions
Python
1
star
39

emacs-eruby-mode

Emacs minor mode for eRuby template (.erb) files
Emacs Lisp
1
star
40

nodes-cookbook

Chef cookbook to store node attributes in data bag items
Ruby
1
star
41

adventofcode-2021

πŸŽ„
Python
1
star
42

commitfest-tools

tools for messing with PostgreSQL commit fests
Python
1
star
43

homebrew-icu

ICU formulae for the Homebrew package manager
Ruby
1
star