Install PostgreSQL via Homebrew
おそらくほとんどの OS X ユーザーは Homebrew
を知っていると思いますが、Homebrew は OS X 用のパッケージマネージャーで、膨大な数のアプリケーションやユーティリティのライブラリを簡単にインストールして実行することができます。
ここでは、Homebrew の (短いながらも) インストールプロセス全体については説明しませんが、Homebrew をインストールして PostgreSQL の管理に使用したい場合は、公式ドキュメントのインストールコマンドを確認してください。 Homebrew がインストールされているかどうかわからない場合は、ターミナルから which brew
コマンドを実行して確認してください。
Homebrew がインストールされたら、ターミナルで次のコマンドを発行して、PostgreSQL をインストールすることができます:
$ brew update$ brew doctor$ brew install postgres
最初の 2 つのコマンドは、Homebrew を更新し、潜在的な問題を (必要に応じて) 報告するために使用されます。
インストール中の出力には多くの有用な情報が含まれていますが、その多くは次のセクションで使用するためにコピーしておく必要があります。
起動時に PostgreSQL を起動するために LaunchAgent と plist を使用する
ほとんどの場合、システムを起動したときに PostgreSQL を起動したいと思うでしょうから、それをコンピュータに伝える必要があります。 OS XのLaunchAgents
launchd
が使用するシンプルなスクリプトで、起動時にシステムにプログラムやコードを実行させるものです。
必要に応じて、このコマンドでuser
LaunchAgents
ディレクトリを作成します。
$ mkdir -p ~/Library/LaunchAgents
ここで、Postgresを実際に実行させるスクリプトから、LaunchAgents
ディレクトリへのシンボリックリンクを作成する必要があります。 シンボリック リンクは、別のディレクトリで使用するためにファイルの新しいコピーを作成することに似ていますが、リンクが「シンボリック」であるため、リンクは単なる転送アドレスになります。
Homebrew によって生成された plist
LaunchAgents
に配置します。
$ ln -sfv /usr/local/opt/postgresql/*.plist ~/Library/LaunchAgents
注意: このコマンドが正しいことを再確認してください: Homebrew が Postgres を最初にインストールしたときに、前述のインストール出力の一部であったはずです。
最後に、LaunchAgent
launchctl load
コマンドを使用して新しいシンボリック リンクでロードしますが、これは特に、コンピュータの起動時にこのスクリプトを実行して Postgres を開始するようにコンピュータに通知するものです。
$ launchctl load ~/Library/LaunchAgents/homebrew.mxcl.postgresql.plist
PostgreSQL を手動で起動する
再起動せずに Postgres を手動で起動するには、やはりインストール時に出力されたコマンドを次のように使用することができます。
$ postgres -D /usr/local/var/postgres
これは、daemon
モードでPostgresを起動しようとします。つまり、ターミナルを引き継ぐことなく、バックグラウンドプロセスとして実行されます。
Homebrew なしで PostgreSQL を起動/停止する
Postgres 用の Homebrew がない (または使用したくない) 場合でも、Postgres がすでにインストールされていれば、Postgres 自体が提供する起動ユーティリティである pg_ctl
を使用して手動で起動することもできます。
これで Postgres が起動します (デフォルトのディレクトリを想定):
$ pg_ctl -D /usr/local/var/postgres -l /usr/local/var/postgres/server.log start
そして、これで Postgres が停止します。
pg_ctl -D /usr/local/var/postgres stop -s -m fast
スタートアップのトラブルシューティング。 initdbを実行しましたか?
場合によっては、Postgresの実行に問題がある場合、initdb
コマンドを一度でも実行したことを確認してください。