Mac OS X 10.6 Snow LeopardにPostgreSQLをインストールする

概要

Snow Leopardに、MacPortsを使ってPostgreSQL 9.1.1をインストールします。



構成

Mac OS X 10.6.8
PostgreSQL 9.1.1



インストール

PostgreSQLのパッケージを探します。

$ sudo port search postgresql
BiggerSQL @1.3.9 (aqua, databases)
    SQL front-end to the postgresql DBMS

BigSQL @1.0 (aqua, databases)
    postgresql psql-like client in cocoa

caml-pgocaml @1.1 (devel, ocaml)
    Type-safe OCaml-interface to the PostgreSQL-database
...

PostgreSQL関連のパッケージは沢山あるため、本体のインストールとは関係なさそうなパッケージもずらずらと表示されます。このままではちょっと見づらいので、grepコマンドで絞り込んでみましょう。

$ sudo port search postgresql | grep ^postgresql
...
postgresql91 @9.1.1 (databases)
postgresql91-doc @9.1.1 (databases)
postgresql91-server @9.1.1 (databases)
...

最新版は9.1.1のようです。postgresql91(psqlpg_dumpなどのクライアントユーティリティ)とpostgresql91-server(initdbやpg_ctlなどのサーバーユーティリティ)をインストールします。

$ sudo port install postgresql91 postgresql91-server

もしドキュメントが必要であれば、postgresql91-docもインストールしましょう。

$ sudo port install postgresql91-doc



自動起動

システム起動時にデーモンとして起動するように設定します。

$ sudo port load postgresql91-server

確認します。

$ sudo launchctl list | grep macports
941	-	org.macports.postgresql91-server
...

設定を解除します。

$ sudo port unload postgresql91-server



領域確保と初期化

ディレクトリを作成します。postgresユーザーはインストール中に作られています。

$ sudo mkdir -p /opt/local/var/db/postgresql91/defaultdb
$ sudo chown postgres:postgres /opt/local/var/db/postgresql91/defaultdb

データベースを初期化します。デフォルトエンコードUTF-8です。

$ sudo su postgres -c '/opt/local/lib/postgresql91/bin/initdb -D /opt/local/var/db/postgresql91/defaultdb'
The files belonging to this database system will be owned by user "_postgres".
This user must also own the server process.

The database cluster will be initialized with locale ja_JP.UTF-8.
The default database encoding has accordingly been set to UTF8.
initdb: could not find suitable text search configuration for locale ja_JP.UTF-8
The default text search configuration will be set to "simple".

fixing permissions on existing directory /opt/local/var/db/postgresql91/defaultdb ... ok
creating subdirectories ... ok
selecting default max_connections ... 20
selecting default shared_buffers ... 1600kB
creating configuration files ... ok
creating template1 database in /opt/local/var/db/postgresql91/defaultdb/base/1 ... ok
initializing pg_authid ... ok
initializing dependencies ... ok
creating system views ... ok
loading system objects' descriptions ... ok
creating collations ... ok
creating conversions ... ok
creating dictionaries ... ok
setting privileges on built-in objects ... ok
creating information schema ... ok
loading PL/pgSQL server-side language ... ok
vacuuming database template1 ... ok
copying template1 to template0 ... ok
copying template1 to postgres ... ok

WARNING: enabling "trust" authentication for local connections
You can change this by editing pg_hba.conf or using the -A option the
next time you run initdb.

Success. You can now start the database server using:

    /opt/local/lib/postgresql91/bin/postgres -D /opt/local/var/db/postgresql91/defaultdb
or
    /opt/local/lib/postgresql91/bin/pg_ctl -D /opt/local/var/db/postgresql91/defaultdb -l logfile start



サービスの起動と停止

サービスを起動する前にログディレクトリを作成しておきます。

$ sudo mkdir /var/log/postgresql91
$ sudo chown postgres:postgres /var/log/postgresql91

サービスを起動します。

$ sudo su postgres -c '/opt/local/lib/postgresql91/bin/pg_ctl -D /opt/local/var/db/postgresql91/defaultdb -l /var/log/postgresql91/logfile start'

サービスを停止します。

$ sudo su postgres -c '/opt/local/lib/postgresql91/bin/pg_ctl -D /opt/local/var/db/postgresql91/defaultdb stop'

pg_ctlを使わずに起動すると、フォアグラウンドで動作します。

$ sudo su postgres -c '/opt/local/lib/postgresql91/bin/postgres -D /opt/local/var/db/postgresql91/defaultdb'



シンボリックリンクの作成

バイナリファイルへのシンボリックリンクをパスが通っているディレクトリに作成します。

$ sudo ln -s /opt/local/lib/postgresql91/bin/postgres /opt/local/bin/
$ sudo ln -s /opt/local/lib/postgresql91/bin/pg_ctl /opt/local/bin/



postgresユーザーの確認

postgresユーザーを確認しておきましょう。

$ dscl . -read /Users/postgres
AppleMetaNodeLocation: /Local/Default
GeneratedUID: A0F6BFB6-4559-452A-B385-A1B9675DAB99
NFSHomeDirectory: /usr/local/pgsql/
Password: *
PrimaryGroupID: 216
RealName:
 PostgreSQL Server
RecordName: _postgres postgres
RecordType: dsRecTypeStandard:Users
UniqueID: 216
$ dscl . -read /Groups/postgres
AppleMetaNodeLocation: /Local/Default
GeneratedUID: 33DE2566-C779-415B-937F-BFF389504D7C
PrimaryGroupID: 113
RealName:
 PostgreSQL Users
RecordName: _postgres postgres
RecordType: dsRecTypeStandard:Groups



参考リンク

こちらの記事を参考にさせていただきました。というか、ほとんどそのままの内容です。
Snow Leopard に PostgreSQL インストール | suusuke - blog

サービスの起動・停止まわりはこちらの記事も参考にさせていただきました。
MacPorts で PostgreSQL をインストールする - make world

ありがとうございます。