読者です 読者をやめる 読者になる 読者になる

平常運転

アニソンが好き

過去記事とかは記事一覧で見れます

MacPortsでPostgreSQLをセットアップするメモ

ただのメモです。

普通にインストールするだけでめんどくさいってどういうことやねんと思わないでもないですが、現実は現実なのでメモ。

要約

port installして言う通りにすればだいたい進むけど、port selectlaunchctlには気をつけよう

環境

多分少々バージョン前後しても同じような感じじゃないかな。

手順

port install系

とりあえずクライアント入れる

$ sudo port install postgresql93

多分入る。

サーバー入れる

$ sudo port install postgesql93-server
--->  Computing dependencies for postgresql93-server
--->  Fetching archive for postgresql93-server
--->  Attempting to fetch postgresql93-server-9.3.0_0.darwin_11.x86_64.tbz2 from http://jog.id.packages.macports.org/macports/packages/postgresql93-server
--->  Attempting to fetch postgresql93-server-9.3.0_0.darwin_11.x86_64.tbz2.rmd160 from http://jog.id.packages.macports.org/macports/packages/postgresql93-server
--->  Installing postgresql93-server @9.3.0_0
--->  Activating postgresql93-server @9.3.0_0

To create a database instance, after install do
 sudo mkdir -p /opt/local/var/db/postgresql93/defaultdb
 sudo chown postgres:postgres /opt/local/var/db/postgresql93/defaultdb
 sudo su postgres -c '/opt/local/lib/postgresql93/bin/initdb -D /opt/local/var/db/postgresql93/defaultdb'

--->  Cleaning postgresql93-server

とりあえず入る。なんかごちゃごちゃ言われたのは次の節でやります

この時点ではまだpsqlのパスが通っていない。

$ which psql
/usr/bin/psql

ここで焦って$PATH/opt/local/lib/postgresql93/bin/を追加するのは良くない。 MacPortsでは、このテのhogeXXってバージョン分かれてるportは大概port select hoge hogeXXして特定のバージョンを選ばないとパスが通らない。 たとえばrubyとかmysqlとかpythonとかもそんな感じ。

なのでport selectする。

$ port select postgresql
Available versions for postgresql:
    none (active)
    postgresql93
$ sudo port select postgresql postgresql93
Selecting 'postgresql93' for 'postgresql' succeeded. 'postgresql93' is now active.
$ port select postgresql
Available versions for postgresql:
    none
    postgresql93 (active)

これでpsqlのパスが通った。

$ which psql
/opt/local/bin/psql

dbのセットアップ

port install postgresql93-serverした時に言われたコマンドを実行することで、デフォルトのdbをセットアップする。

$  sudo mkdir -p /opt/local/var/db/postgresql93/defaultdb
$  sudo chown postgres:postgres /opt/local/var/db/postgresql93/defaultdb
$  sudo su postgres -c '/opt/local/lib/postgresql93/bin/initdb -D /opt/local/var/db/postgresql93/defaultdb'

(中略)

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

Success. You can now start the database server using:

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

これでセットアップできた。

ローカルからの認証は素通しだから注意してね(要約)みたいな警告がなされている。 対応するドキュメントはこの辺。

http://www.postgresql.jp/document/9.2/html/auth-methods.html#AUTH-TRUST

サーバを立ち上げる

さっきのdbセットアップの時に立ち上げる方法が二つ提示されているけど、Macらしくlaunchctlを使うこともできるのでそっちを使う。

$ sudo launchctl load -w /Library/LaunchDaemons/org.macports.postgresql93-server.plist
$ sudo launchctl start org.macports.postgresql93-server

launchctl使いたくなければさっきのpg_ctlとかpostgres使った起動をすればいいと思うけど、敢えて避けるほどの事情はないんじゃないかなと思います。あったら誰か教えてください。

一応触れておくと、サーバを止めるときは

$ sudo launchctl stop org.macports.postgresql93-server

確認する

$ psql -U postgres
psql (9.3.0)
Type "help" for help.

postgres=# \q

めでたしめでたし。 あとはcreateuserとかcreatedbとかして快適なポスグレライフを送ろう。

雑感

デフォルトdbのセットアップはport install postgresql93-serverの段階でやってくれてもいい気がする。

あと、昔はport install時にlaunchctlについて説明があったっぽいんだけど(参考)、最近はないっぽい。 詳しく調べてないからわかんないけど、これはMacPortsの側の事情のような気がする。