Macで複数のバージョンのPostgresqlを共存させる


Postgresql 9.1から9.3にアップデートする必要があったのですが、一時的にMac内に2つのバージョンを共存させておく必要がありました。ちょっと試行錯誤して、homebrewを使って実現できたので書いておきます。

環境

  • Mac 10.11 El Capitan
  • Homebrew 0.9.5

Postgresqlのインストール

まずPostgresqlの新バージョンをインストールします。homebrew versionsを使用するとバージョンを指定することができます。バージョン名がtap名になってるので、 brew upgrade をしても勝手にメジャーバージョンが上がってしまうことがないので便利。

インストール可能なPostgresqlをリストアップしてみます。

postgresql91(バージョン9.1)にチェックが付いているのはインストール済みだから。さっそく9.3をインストールします。

インストールが完了したら「initdbしろよ」的なメッセージが表示されると思います。その前に現在brew linkされているpostgresqlのバージョンを確認しておきます。

つまり9.3はただインストールされただけで、linkはされてない(=パスが通ってない)という状況です。どちらのバージョンを使うかその都度切り替えられるようにしたいので、まずは現在の9.1のデータディレクトリをリネームします。(データディレクトリはinitdb時に指定するのですが、通常は /usr/local/var/postgresになってると思います。)

これで9.3をセットアップする準備ができました。さっそくlinkしてinitdbを。

9.3用のデータディレクトリを作成できました。

起動・停止スクリプト

あとはbrew link/unlinkを駆使して起動・停止するPostgresqlのバージョンをその都度切り替えられるようにします。私が作ったスクリプトを貼っておきます。簡易的なものですが、普段使いには問題ないと思います。

使い方は以下のような感じ。

 

素直に仮想環境使えよとも思うんですが、独りプロジェクトとかだと手間の割にあんまりメリットがないんですよねー。独りでできるぐらいなので環境自体シンプルだし。Rails使うことが多いんですが、Rubyはrbenv、gemはbundlerで環境分けられるし。

何かの役に立てば幸いです。

関連する記事


コメントを残す

メールアドレスが公開されることはありません。

CAPTCHA


このサイトはスパムを低減するために Akismet を使っています。コメントデータの処理方法の詳細はこちらをご覧ください