PostgreSQLの自動起動
FinkでPostgreSQLがイスントールできたといっても喜ぶのはまだ早いです。OS再起動時のPostgreSQL自動起動まではインストーラは設定してくれていないので、信じられないかもしれませんが手動で設定しなければなりません*1。MacOS 9と違ってMacOS Xでの起動項目への組み込みは大変です。
関連するファイルは全部で3つ。
- /Library/StartupItems/PostgreSQL/PostgreSQL
- /Library/StartupItems/PostgreSQL/''StartupParameters.plist''
- 起動項目の属性を記載 (root,644=rw-r--r--)
- /etc/''hostconfig''(root,644=rw-r--r--)
- 自動起動するかどうかのスイッチ(変数)を設定
下記のようにして正しく置く必要があります。
%sudo mkdir /Library/StartupItems/PostgreSQL %sudo touch /Library/StartupItems/PostgreSQL/PostgreSQL %sudo touch /Library/StartupItems/PostgreSQL/StartupParameters.plist
それぞれファイルの内容は次の通りです。プログラムなので、わからない場合は一字一句間違えないでコピーして下さい。
#!/bin/sh . /etc/rc.common postgreSQL='sudo /sw/bin/pgsql.sh' StartService () { if [ "${POSTGRESQLSERVER:=-NO-}" = "-YES-" ]; then ConsoleMessage "Starting PostgreSQL database server" $postgreSQL start fi } StopService () { ConsoleMessage "Stopping PostgreSQL database server" $postgreSQL stop } RestartService () { if [ "${POSTGRESQLSERVER:=-NO-}" = "-YES-" ]; then ConsoleMessage "ReStarting PostgreSQL database server" $postgreSQL restart else StopService fi } RunService "$1"
【2】PostgreSQL/StartupParameters.plist (Property List Editor.appで編集することもできます。)
{ Description = "PostgreSQL Database Server"; Provides = ("postgres database"); Requires = ("Disks", "Resolver"); Uses = ("NFS", "Network Time"); OrderPreference = "None"; Messages = { start = "Starting PostgreSQL database server"; stop = "Stopping PostgreSQL database server"; restart = "Restarting PostgreSQL database server"; }; }
【3】変数POSTGRESQLSERVERを/etc/hostconfigで設定 (次の一行を追加)
POSTGRESQLSERVER=-YES-
これで再起動するとPostgreSQLが自動で起動します。あり得ないですよね。石器時代にタイムスリップした感覚です。
*1:MacPortではファイルは用意されていて、手動で移動するだけでいいようですが。