pgvmを使ってみたよ

mysqlenvとかmysqlenvとかあるけど、PostgreSQLのないのかなーと思って探してみたらpgvmというものを見つけました。
PostgreSQLのバージョンを切り替えて使わなきゃならないほどPostgreSQL使えるわけじゃないのだけど、特定の場所にインストールしてくれるし、要らなくなったらディレクトリをまるごと削除すればよいだけなので、この手のものが好きだったりします。--prefixつけて./configureをすれば良いだけなのだけども‥‥
というわけでちょっと使ってみました。
環境:Ubuntu 12.04 LTS 64bit

インストール

インストールは

$ curl -s -L https://raw.github.com/guedes/pgvm/master/bin/pgvm-self-install | bash

でOKです。~/.bashrcにexport文が勝手に書き込まれるのはあまりよろしくないなあ……
インストールしたら

$ source $HOME/.bashrc

でパスが通ります。

使ってみる

とりあえずヘルプを表示させてみたり。

$ pgvm help

Usage: pgvm action [arguments]

  - actions:

    install      Installs a specific PostgreSQL version
    uninstall    Uninstalls a specific PostgreSQL version

    list         List all installed PostgreSQL versions
    use          Choose an environment to use

    cluster      Manipulate clusters (PGDATA directories)

    console      Starts psql and connects to a specified cluster

    help         This help

コンパイルしてみる

$ pgvm install 9
downloading 'http://ftp.postgresql.org/pub/source/v9.2.4/postgresql-9.2.4.tar.gz', please be patient... done.
checking 'postgresql-9.2.4.tar.gz' integrity... done.
extracting postgresql-9.2.4.tar.gz ... done.
configuring PostgreSQL Version: 9.2.4 ... configure: error: readline library not found
If you have readline already installed, see config.log for details on the
failure.  It is possible the compiler isn't looking in the proper directory.
Use --without-readline to disable readline support.
done.
compiling ... ERRO: can not compile PostgreSQL 9.2.4, see make.error.log for details.

ありゃ…… 失敗した。
--without-readlineを付加してコンパイルするか、readlineのdevパッケージをインストールするかしないとダメみたい。
ここではlibreadline6-devをインストールすることに。

$ dpkg -l | grep readline
ii  libreadline6                                                6.2-8                                               GNU readline and history libraries, run-time libraries
ii  readline-common                                             6.2-8                                               GNU readline and history libraries, common files
$ sudo apt-get install libreadline6-dev

もう一度コンパイル

$ pgvm install 9
checking 'postgresql-9.2.4.tar.gz' integrity... done.
extracting postgresql-9.2.4.tar.gz ... done.
configuring PostgreSQL Version: 9.2.4 ... done.
compiling ... done.
installing ... done.

できた!

使ってみる

$ pgvm list
PostgreSQL Installed Version:

    9.2.4

ちゃんとインストールされてるみたい。

$ psql --version
プログラム 'psql' はまだインストールされていません。  次のように入力することでインストールできます:
sudo apt-get install postgresql-client-common
$ pgvm use 9.2.4
switched to 9.2.4
$ psql --version
psql (PostgreSQL) 9.2.4

ちゃんと切り替えられてる。

クラスタを作ってみる

ただDB作りたいだけなんだけど、クラスタを作ってあげないとダメなみたい。クラスタ良くわかってない。

$ pgvm cluster create test
initializing cluster in '/home/sasaplus1/.pgvm/clusters/9.2.4/test'... ok!
$ pgvm cluster list
cluster in current environment (9.2.4):

    test  is offline at port 5433

testクラスタができたので起動してみる。

$ pgvm cluster start test
starting cluster test@9.2.4
LOG:  database system was shut down at 2013-04-26 22:35:56 JST
LOG:  database system is ready to accept connections
LOG:  autovacuum launcher started

これで起動したみたいなのでアクセスしてみる。

$ pgvm console test
connecting to cluster 'test' on port '5433' ...

psql (9.2.4)
Type "help" for help.

postgres=# \q

アクセスできた!いつものpsqlや!
止めるときは以下のようにするみたい。

$ pgvm cluster stop test
stopping cluster test@9.2.4
LOG:  received smart shutdown request
LOG:  autovacuum launcher shutting down
LOG:  shutting down
LOG:  database system is shut down


PostgreSQLコンパイルにちょっとだけ時間がかかるけど、それ以外はとても良いかも。
ゆるふわPostgreSQLな感じで大変好みです。


参考:
GitHub - guedes/pgvm: PostgreSQL Version Manager
YouTube