Install PostgreSQL 9.2 on Ubuntu 12.04

Ubuntu 12.04 に標準でインストールされる PostgreSQL のバージョンは 9.1。
2012年9月にリリースされた PostgreSQL 9.2 をインストールする方法をメモ。

apt.postgresql.org からインストール

PPA は deprecated 扱いになったので、以下のページに従い、レポジトリに apt.postgresql.org を指定してインストールする。

https://wiki.postgresql.org/wiki/Apt

流れ

  1. レポジトリの追加
  2. レポジトリの公開鍵の登録
  3. インストール

レポジトリの追加
apt-get のレポジトリに apt.postgresq.org を追加する。/etc/apt/sources.list.d/ にファイル pgdb.list を追加。
下の例で precise の箇所にはディストリビューションのバージョンを入れる。今回は 12.04 なので precise

# cat /etc/apt/sources.list.d/pgdg.list
deb http://apt.postgresql.org/pub/repos/apt/ precise-pgdg main

レポジトリの公開鍵の追加
追加したレポジトリの公開鍵を apt-key で登録する。

# apt-get update
...
Ign http://apt.postgresql.org precise-pgdg/main Translation-en_US
Ign http://apt.postgresql.org precise-pgdg/main Translation-en
Fetched 2,982 kB in 7s (408 kB/s)
Reading package lists... Done
W: GPG error: http://apt.postgresql.org precise-pgdg Release: The following signatures couldn't be verified because the public key is not available: NO_PUBKEY 7FCC7D46ACCC4CF8
# wget --quiet -O - http://apt.postgresql.org/pub/repos/apt/ACCC4CF8.asc | sudo apt-key add -
OK

インストール
最後にレポジトリを更新して、必要なパッケージをインストールする。
2013/Mar 時点では、8.3, 8.4, 9.0, 9.1, 9.2 がサポートされている。

# apt-get update
...
# apt-cache search postgresql | grep 9.2
libpgtypes3 - shared library libpgtypes for PostgreSQL 9.2
postgresql-9.2 - object-relational SQL database, version 9.2 server
postgresql-9.2-dbg - debug symbols for postgresql-9.2
postgresql-9.2-debversion - Debian version number type for PostgreSQL
postgresql-9.2-pgmp - arbitrary precision integers and rationals for PostgreSQL 9.2
postgresql-9.2-pgpool2 - connection pool server and replication proxy for PostgreSQL - modules
postgresql-9.2-pgq3 - Skype tools for PostgreSQL replication, londiste and PGQ
postgresql-9.2-plproxy - database partitioning system for PostgreSQL 9.2
postgresql-9.2-plr - Procedural language interface between PostgreSQL and R
postgresql-9.2-plsh - PL/sh procedural language for PostgreSQL 9.2
postgresql-9.2-repmgr - replication manager support modules for PostgreSQL 9.2
postgresql-client-9.2 - front-end programs for PostgreSQL 9.2
postgresql-contrib-9.2 - additional facilities for PostgreSQL
postgresql-doc-9.2 - documentation for the PostgreSQL database management system
postgresql-plperl-9.2 - PL/Perl procedural language for PostgreSQL 9.2
postgresql-plpython-9.2 - PL/Python procedural language for PostgreSQL 9.2
postgresql-plpython3-9.2 - PL/Python 3 procedural language for PostgreSQL 9.2
postgresql-pltcl-9.2 - PL/Tcl procedural language for PostgreSQL 9.2
postgresql-server-dev-9.2 - development files for PostgreSQL 9.2 server-side programming
skytools-modules-9.2 - PostgreSQL 9.2 modules for skytools

(Deprecated)PPA

PostgreSQL サイトで紹介されている方法のうち “Ubuntu PPA” の方法でインストールする。

http://www.postgresql.org/download/linux/ubuntu/

現在(2013/Mar/** 以降)は PPA でインストールしようとすると、以下の様な警告メッセージが表示され、非推奨扱い。

You are about to add the following PPA to your system:
Newer PostgreSQL major versions, backported to supported Ubuntu releases.

ATTENTION: The functionality of this has been moved to apt.postgresql.org, see https://wiki.postgresql.org/wiki/Apt for details. apt.postgresql.org has a lot more packages, and also better QA. This PPA will still be kept for Ubuntu 10.04’s and 11.10’s life time, but will not receive packages for Ubuntu releases later than 12.10.

In about a year (during Ubuntu 12.04 LTS’s life time, but after 12.10 is end-of-life) this PPA is going to be deprecated. Please consider moving to apt.postgresql.org soon. Please see https://wiki.postgresql.org/wiki/Apt for instructions.
More info: https://launchpad.net/~pitti/+archive/postgresql
Press [ENTER] to continue or ctrl-c to cancel adding it

流れ

  1. レポジトリ管理ツールのインストール
  2. レポジトリの追加
  3. PostgreSQL 9.2 のインストール
  4. PostgreSQL 9.1 と 9.2 の同居

レポジトリ管理ツールのインストール

まずは ubuntu のレポジトリ管理ツール add-apt-repository をインストール

$ add-apt-repository
The program 'add-apt-repository' is currently not installed.  You can install it by typing:
sudo apt-get install python-software-properties

インストールされていれば次へ。されていなければ python-software-properties パッケージをインストールする。

$ sudo apt-get install python-software-properties
[sudo] password for ...:
Reading package lists... Done
Building dependency tree
Reading state information... Done
The following extra packages will be installed:
  python-pycurl unattended-upgrades
Suggested packages:
  libcurl4-gnutls-dev python-pycurl-dbg bsd-mailx
The following NEW packages will be installed:
  python-pycurl python-software-properties unattended-upgrades
0 upgraded, 3 newly installed, 0 to remove and 97 not upgraded.
Need to get 96.5 kB of archives.
After this operation, 645 kB of additional disk space will be used.
Do you want to continue [Y/n]? y
$ add-apt-repository
Error: must run as root

レポジトリの追加

レポジトリ Personal Package Archive (PPA) にある PostgreSQL を追加する。

$ sudo add-apt-repository ppa:pitti/postgresql
You are about to add the following PPA to your system:
 Newer PostgreSQL versions, backports, and betas.
 More info: https://launchpad.net/~pitti/+archive/postgresql
Press [ENTER] to continue or ctrl-c to cancel adding it

gpg: keyring `/tmp/tmpP6YjX6/secring.gpg' created
gpg: keyring `/tmp/tmpP6YjX6/pubring.gpg' created
gpg: requesting key 8683D8A2 from hkp server keyserver.ubuntu.com
gpg: /tmp/tmpP6YjX6/trustdb.gpg: trustdb created
gpg: key 8683D8A2: public key "Launchpad PPA for Martin Pitt" imported
gpg: Total number processed: 1
gpg:               imported: 1  (RSA: 1)
OK

レポジトリを更新してパッケージ情報を取得。

$ sudo apt-get update
...
Ign http://ppa.launchpad.net precise/main Translation-en_US
Ign http://ppa.launchpad.net precise/main Translation-en
Fetched 2,481 kB in 5s (436 kB/s)
Reading package lists... Done

追加された 9.2 系 PostgreSQL のパッケージを確認

$ apt-cache search postgresql | grep 9.2
libpgtypes3 - shared library libpgtypes for PostgreSQL 9.2
postgresql-9.2 - object-relational SQL database, version 9.2 server
postgresql-9.2-dbg - debug symbols for postgresql-9.2
postgresql-client-9.2 - front-end programs for PostgreSQL 9.2
postgresql-server-dev-9.2 - development files for PostgreSQL 9.2 server-side programming
postgresql-doc-9.2 - documentation for the PostgreSQL database management system
postgresql-contrib-9.2 - additional facilities for PostgreSQL
postgresql-plperl-9.2 - PL/Perl procedural language for PostgreSQL 9.2
postgresql-plpython-9.2 - PL/Python procedural language for PostgreSQL 9.2
postgresql-plpython3-9.2 - PL/Python 3 procedural language for PostgreSQL 9.2
postgresql-pltcl-9.2 - PL/Tcl procedural language for PostgreSQL 9.2

PostgreSQL 9.2 のインストール

$ sudo apt-get install postgresql-9.2 postgresql-contrib-9.2 postgresql-plpython-9.2 libpgtypes3
...
$ sudo /etc/init.d/postgresql status
9.2/main (port 5432): online
$ psql --version
psql (PostgreSQL) 9.2.2

ということで、無事 PostgreSQL 9.2 がインストールされた。

PostgreSQL 9.1 と 9.2 の共存

すでに PostgreSQL 9.1 がインストールされている場合、9.1 を残したまま 9.2 もインストールされる。
9.1 はデフォルトの 5432 ポートで動作するのに対して、9.2 は 5433 ポートで起動。

$ /etc/init.d/postgresql status
9.1/main (port 5432): online
9.2/main (port 5433): online

PostgreSQL プロセスを操作する場合、コマンドに続けてバージョンを指定する。

$ sudo /etc/init.d/postgresql stop 9.1
 * Stopping PostgreSQL 9.1 database server                              [ OK ]
$ /etc/init.d/postgresql status
9.1/main (port 5432): down
9.2/main (port 5433): online

バージョンを指定しなければ、両方のクラスタに対してコマンドが実行される

$ sudo /etc/init.d/postgresql restart
 * Restarting PostgreSQL 9.1 database server                                                                                               [ OK ]
 * Restarting PostgreSQL 9.2 database server

ポートを変える場合は、バージョンごとに切られている設定ファイルを修正。

$ diff -u /etc/postgresql/9.2/main/postgresql.conf*
--- /etc/postgresql/9.2/main/postgresql.conf    2013-02-01 22:25:05.991291048 +0900
+++ /etc/postgresql/9.2/main/postgresql.conf.orig       2013-02-01 22:24:48.387290779 +0900
@@ -60,7 +60,7 @@
                                        # comma-separated list of addresses;
                                        # defaults to 'localhost'; use '*' for all
                                        # (change requires restart)
-port = 5432                            # (change requires restart)
+port = 5433                            # (change requires restart)
 max_connections = 100                  # (change requires restart)
 # Note:  Increasing max_connections costs ~400 bytes of shared memory per
 # connection slot, plus lock space (see max_locks_per_transaction).

プログラム群(クラスター)は、バージョンごとに別ディレクトリにインストールされている。

  • /usr/lib/postgresql/9.1
  • /usr/lib/postgresql/9.2

/usr/bin 以下にある PostgreSQL 系のコマンドは、9.2 のインストールの有無にかかわらず /usr/share/postgresql-common/pg_wrapper へのシンボリックリンクになっている。
環境変数や設定ファイル(~/.postgresqlrc など)を見て、どのバージョンのコマンドを呼び出すか振り分けている模様。

$ psql --version
psql (PostgreSQL) 9.2.2
$ ls -l /usr/bin/psql
lrwxrwxrwx 1 root root 37 Jan  7 06:21 /usr/bin/psql -> ../share/postgresql-common/pg_wrapper
Advertisements
Tagged with: , , , ,
Posted in database
2 comments on “Install PostgreSQL 9.2 on Ubuntu 12.04
  1. Sang says:

    Appreciate this post. Let me try it out.

  2. tom says:

    Worked for me, thanks Siguniang!

Leave a Reply

Fill in your details below or click an icon to log in:

WordPress.com Logo

You are commenting using your WordPress.com account. Log Out / Change )

Twitter picture

You are commenting using your Twitter account. Log Out / Change )

Facebook photo

You are commenting using your Facebook account. Log Out / Change )

Google+ photo

You are commenting using your Google+ account. Log Out / Change )

Connecting to %s

Archives
%d bloggers like this: