CentOS5にyumでPostgreSQL8.3をインストールする

CentOS 5系のOSで、yumを使い標準のままPostgreSQLのインストールを行うと、PostgreSQL 8.1.11がインストールされる。エンジンの改良が行われて高速に動作すると言われる 8.3 や最新の 8.4 を利用したい時は、 tar.gz でソースを持ってきてコンパイルする方法もあるが、やっぱりyumがいいなぁと思う私のような場合には、以下の方法で最新の PostgreSQLが利用することにした。

まずは、インストールしてあるPostgreSQLをアンインストール


# yum -y remove postgresql

次にpgdg-CentOS - PostgreSQL 8.4.X PGDG RPMs for CentOS - Yum Repository Configuration から欲しいバージョンのPostgreSQLリポジトリを入手し、インストール。


# wget http://yum.pgsqlrpms.org/reporpms/8.3/pgdg-centos-8.3-6.noarch.rpm
# rpm -ivh pgdg-centos-8.3-6.noarch.rpm

続いて元々あるリポジトリ CentOS-Base.repo を編集。「Base」、「update」のgpgkey= の行の直下に、 「exclude=postgres*」を追記する。その後で yum を使って PostgreSQL をインストールすれば、8.3系のpostgreSQLをインストールできる。


# yum -y install postgresql-server postgresql-devel php-pgsql

インストールされたパッケージを確認すると以下の通り。ちゃんと新しいバージョンになっている。


# rpm -qa| grep postgres
postgresql-libs-8.3.7-1PGDG.rhel5
postgresql-8.3.7-1PGDG.rhel5
postgresql-server-8.3.7-1PGDG.rhel5
compat-postgresql-libs-4-1PGDG.rhel5
postgresql-devel-8.3.7-1PGDG.rhel5

以下、補足情報。インストールしたPostgreSQLサーバを起動する際には、初回起動に限り手動でinitdbを実行しデータベースクラスタを初期化する必要がある。上記手順でインストールした場合に自動作成されるPostgreSQLの起動停止スクリプトでは、初回起動だった場合に自動でinitdbを実行する機能はないのが手動実行しなければならない事情である。手動でのinitdb実行は以下のようにすればOK。


# su - postgres
$ initdb --encoding=UTF8 --no-locale
# /etc/init.d/postgresql start
postgresql サービスを開始中: [ OK ]