PostgreSQLの自動起動

FinkPostgreSQLがイスントールできたといっても喜ぶのはまだ早いです。OS再起動時のPostgreSQL自動起動まではインストーラは設定してくれていないので、信じられないかもしれませんが手動で設定しなければなりません*1MacOS 9と違ってMacOS Xでの起動項目への組み込みは大変です。
関連するファイルは全部で3つ。

  1. /Library/StartupItems/PostgreSQL/PostgreSQL
  2. /Library/StartupItems/PostgreSQL/''StartupParameters.plist''
    • 起動項目の属性を記載 (root,644=rw-r--r--)
  3. /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

それぞれファイルの内容は次の通りです。プログラムなので、わからない場合は一字一句間違えないでコピーして下さい。

【1】PostgreSQL/PostgreSQL

#!/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ではファイルは用意されていて、手動で移動するだけでいいようですが。