PostgreSQL のインストールはソースからコンパイルして行うと、依存関係ではまりやすいので、サクッと済ませるには yum を使うのがよさそう。PostgreSQL を yum でインストールする方法について、PostgreSQL RPM Building Project – Yum Repository Howto に書かれている。そのあたりのまとめ。
yum リポジトリの登録
yum でインストールといっても、標準のリポジトリでは、置かれている rpm パッケージのバージョンが古かったりする。そこで、PostgreSQL RPM Building Project が管理しているリポジトリを追加で登録する。
yum リポジトリを追加する際、通常であれば、/etc/yum.repos.d/ にある、.repo ファイルを編集するか、新たな .repo ファイルを作成して同じディレクトリに置く必要がある。
ところが、PostgreSQL RPM Building Project では、、/etc/yum.repos.d/ におくための .repo ファイルを rpm パッケージで配布している。つまり、rpm で .repos ファイルを自動設置できるということ。これは便利!
yum リポジトリインストール用の rpm は、Linux のディストリビューションごと、Postgres のバージョンごとになっている。Packages beginning with letter "P".から、インストールしたい PostgreSQL のバージョンの rpm を見つける。
見つけた URL を wget !
[root@centos ~]# wget http://yum.pgsqlrpms.org/reporpms/8.3/pgdg-centos-8.3-6.noarch.rpm
すかさず、yum リポジトリをインストール。
[root@centos ~]# rpm -ivh pgdg-centos-8.3-6.noarch.rpm
/etc/yum.repos.d/ を確認すると、pgdg-81-cetos.repo ができている。
[root@centos ~]# ls /etc/yum.repos.d/
CentOS-Base.repo CentOS-Media.repo pgdg-83-centos.repo
ちなみに、pgdg-83-centos.repo の中身。
[root@centos ~]# cat /etc/yum.repos.d/pgdg-83-centos.repo
[pgdg83]
name=PostgreSQL 8.3 $releasever - $basearch
baseurl=http://yum.pgsqlrpms.org/8.3/redhat/rhel-$releasever-$basearch
enabled=1
gpgcheck=1
gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-PGDG
[pgdg83-id]
name=PostgreSQL 8.3 $releasever - $basearch with integer datetimes.
baseurl=http://yum.pgsqlrpms.org/8.3/redhat/rhel-$releasever-$basearch-id
enabled=0
gpgcheck=1
gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-PGDG
[pgdg83-source]
name=PostgreSQL 8.3 $releasever - $basearch - Source
failovermethod=priority
baseurl=http://yum.pgsqlrpms.org/srpms/8.3/redhat/rhel-$releasever-$basearch
enabled=0
gpgcheck=1
gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-PGDG
[pgdg83-id-source]
name=PostgreSQL 8.3 $releasever - $basearch - integer-datetimes Source
failovermethod=priority
baseurl=http://yum.pgsqlrpms.org/srpms/8.3/redhat/rhel-$releasever-$basearch-id
enabled=0
gpgcheck=1
gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-PGDG
次の手順は、PostgreSQL RPM Building Project – Yum Repository Howto にかいてある。
In order to use PGDG repository properly, you may need to exclude postgresql packages from the repository of the distro. Here are the steps:
That is enough for excluding distro packages.
exclude は、yum のインストールやアップデートから、指定したパッケージを除外するオプション。CentOS-Base.repo に exclude=postgresql* と指定することで、postgresql から始まるパッケージを CentOS 標準のリポジトリから除外する。
[root@centos ~]# vi /etc/yum.repos.d/CentOS-Base.repo
(省略)
[base]
name=CentOS-$releasever - Base
mirrorlist=http://mirrorlist.centos.org/?release=$releasever&arch=$basearch&repo=os
#baseurl=http://mirror.centos.org/centos/$releasever/os/$basearch/
gpgcheck=1
gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-CentOS-5
exclude=postgresql*
#released updates
[updates]
name=CentOS-$releasever - Updates
mirrorlist=http://mirrorlist.centos.org/?release=$releasever&arch=$basearch&repo=updates
#baseurl=http://mirror.centos.org/centos/$releasever/updates/$basearch/
gpgcheck=1
gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-CentOS-5
exclude=postgresql*
これで、PostgreSQL の yum リポジトリの登録が完了。長くなってしまった。
リポジトリの追加がうまくいったかどうかは、yum install postgresql を実行して(Is this ok [y/N]:N で中止する)インストールされる postgresql のバージョンで確認することがでる。
PstgreSQL のインストール
あとは簡単。yum install でサクッといける。yum install を実行すると、インストールされる PostgreSQL のバージョンを確認することができる。
[root@centos ~]# yum install postgresql-server
(省略)
==========================================================================================
Package Arch Version Repository Size
==========================================================================================
Installing:
postgresql-server i386 8.3.7-1PGDG.rhel5 pgdg83 4.6 M
PostgreSQL の初期設定
データベースの初期化
データベースの初期化は、8.3 あたりから initdb オプションで行うようです。service postgresql start ではエラーになりました。
[root@centos ~]# service postgresql start
/var/lib/pgsql/data is missing. Use "service postgresql initdb" to initialize the cluster first.
[失敗]
[root@centos ~]# service postgresql initdb
データベースを初期化中: [ OK ]
サービスの開始と自動起動の登録
[root@centos ~]# service postgresql start
postgresql サービスを開始中: [ OK ]
[root@centos ~]# chkconfig postgresql --list
postgresql 0:off 1:off 2:off 3:off 4:off 5:off 6:off
[root@centos ~]# chkconfig postgresql on
[root@centos ~]# chkconfig postgresql --list
postgresql 0:off 1:off 2:on 3:on 4:on 5:on 6:off
システム側の postgres ユーザーにパスワードを設定
システム側の postgres ユーザーは postgresql-server インストール時に自動で作成されます。
[root@centos ~]# passwd postgres
Changing password for user postgres.
New UNIX password:
Retype new UNIX password:
passwd: all authentication tokens updated successfully.
PostgreSQL の postgres ユーザーにパスワードを設定
この postgres ユーザー(ロール)は PostgreSQL のスーパーユーザー権限を持っています。
root@centos ~]# su - postgres
-bash-3.2$ psql template1
Welcome to psql 8.3.7, the PostgreSQL interactive terminal.
Type: \copyright for distribution terms
\h for help with SQL commands
\? for help with psql commands
\g or terminate with semicolon to execute query
\q to quit
template1=# alter role postgres with password 'パスワード';
ALTER ROLE
ここまでの作業で、とりあえず使える状態になりました。