インストール
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(psqlやpg_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
ありがとうございます。