CentOS 5にPostgreSQLをインストールする

概要

CentOS 5にPostgreSQL 9.1.2をインストールします。



構成

CentOS release 5.7 (Final)
PostgreSQL 9.1.2



インストール済みパッケージの確認

インストール済みのPostgreSQLがないか確認します。

# psql --version
-bash: psql: command not found

インストール済みの関連パッケージも検索しておきます。

# rpm -qa | grep postgresql

postgresql-libsが見つかりました。

postgresql-libs-8.1.23-1.el5_7.3
postgresql-libs-8.1.23-1.el5_7.3
Name       : postgresql-libs
Arch       : x86_64
Version    : 8.1.23
Release    : 1.el5_7.3
Size       : 507 k
Repo       : installed
Summary    : The shared libraries required for any PostgreSQL clients.
URL        : http://www.postgresql.org/
License    : BSD
Description: The postgresql-libs package provides the essential shared libraries for any
           : PostgreSQL client program or interface. You will need to install this package
           : to use any other PostgreSQL package or any clients that need to connect to a
           : PostgreSQL server.



インストールするパッケージの検索

インストールするパッケージを検索します。

# yum --disableplugin=priorities info postgresql-server

CentOSの標準リポジトリで見つかりましたが、バージョンが8.1.23とかなり古いものでした。

Name       : postgresql-server
Arch       : x86_64
Version    : 8.1.23
Release    : 1.el5_7.3
Size       : 3.9 M
Repo       : updates
Summary    : The programs needed to create and run a PostgreSQL server.
URL        : http://www.postgresql.org/
License    : BSD
Description: The postgresql-server package includes the programs needed to create
           : and run a PostgreSQL server, which will in turn allow you to create
           : and maintain PostgreSQL databases.  PostgreSQL is an advanced
           : Object-Relational database management system (DBMS) that supports
           : almost all SQL constructs (including transactions, subselects and
           : user-defined types and functions). You should install
           : postgresql-server if you want to create and maintain your own
           : PostgreSQL databases and/or your own PostgreSQL server. You also need
           : to install the postgresql package.

PostgreSQL RPM Repository (with Yum)からRPMファイルをダウンロードして、本家のリポジトリを追加します。

$ wget -P /tmp http://yum.postgresql.org/9.1/redhat/rhel-5-x86_64/pgdg-centos91-9.1-4.noarch.rpm
$ sudo rpm -ivh /tmp/pgdg-centos91-9.1-4.noarch.rpm

もう一度検索します。

$ yum --disableplugin=priorities info postgresql-server

やはりCentOSの標準リポジトリにあるものしか見つかりません。

Name       : postgresql-server
Arch       : x86_64
Version    : 8.1.23
Release    : 1.el5_7.3
Size       : 3.9 M
Repo       : updates
Summary    : The programs needed to create and run a PostgreSQL server.
URL        : http://www.postgresql.org/
License    : BSD

本家のリポジトリで見つからないのはおかしいので、パッケージを列挙してみます。

$ yum list | grep postgresql

9.1系はpostgresql91-xxxxというパッケージ名になっていました。

postgresql91.x86_64                        9.1.2-1PGDG.rhel5           pgdg91
postgresql91-contrib.x86_64                9.1.2-1PGDG.rhel5           pgdg91
postgresql91-debuginfo.x86_64              9.1.1-1PGDG.rhel5           pgdg91
postgresql91-devel.x86_64                  9.1.2-1PGDG.rhel5           pgdg91
postgresql91-docs.x86_64                   9.1.2-1PGDG.rhel5           pgdg91
postgresql91-jdbc.x86_64                   9.1.901-1PGDG.rhel5         pgdg91
postgresql91-jdbc-debuginfo.x86_64         9.1.901-1PGDG.rhel5         pgdg91
postgresql91-libs.x86_64                   9.1.2-1PGDG.rhel5           pgdg91
postgresql91-odbc.x86_64                   09.00.0310-1PGDG.rhel5      pgdg91
postgresql91-odbc-debuginfo.x86_64         09.00.0310-1PGDG.rhel5      pgdg91
postgresql91-plperl.x86_64                 9.1.2-1PGDG.rhel5           pgdg91
postgresql91-plpython.x86_64               9.1.2-1PGDG.rhel5           pgdg91
postgresql91-pltcl.x86_64                  9.1.2-1PGDG.rhel5           pgdg91
postgresql91-python.x86_64                 4.0-2PGDG.rhel5             pgdg91
postgresql91-python-debuginfo.x86_64       4.0-2PGDG.rhel5             pgdg91
postgresql91-server.x86_64                 9.1.2-1PGDG.rhel5           pgdg91
postgresql91-tcl.x86_64                    1.9.0-1.rhel5               pgdg91
postgresql91-tcl-debuginfo.x86_64          1.9.0-1.rhel5               pgdg91
postgresql91-test.x86_64                   9.1.2-1PGDG.rhel5           pgdg91

もう一度検索します。

$ yum --disableplugin=priorities info postgresql91-server.x86_64

ようやく9.1系のパッケージが見つかりました。

Name       : postgresql91-server
Arch       : x86_64
Version    : 9.1.2
Release    : 1PGDG.rhel5
Size       : 5.1 M
Repo       : pgdg91
Summary    : The programs needed to create and run a PostgreSQL server
URL        : http://www.postgresql.org/
License    : PostgreSQL
Description: The postgresql91-server package includes the programs needed to create
           : and run a PostgreSQL server, which will in turn allow you to create
           : and maintain PostgreSQL databases.  PostgreSQL is an advanced
           : Object-Relational database management system (DBMS) that supports
           : almost all SQL constructs (including transactions, subselects and
           : user-defined types and functions). You should install
           : postgresql91-server if you want to create and maintain your own
           : PostgreSQL databases and/or your own PostgreSQL server. You also need
           : to install the postgresql package.



8.1系のアンインストール

9.1系のパッケージをインストールする前に、postgresql-libs-8.1.23-1.el5_7.3をアンインストールしておきます。

$ sudo yum remove postgresql-libs-8.1.23-1.el5_7.3



9.1系のインストール

インストールします。

$ sudo yum --disableplugin=priorities install postgresql91-server.x86_64
Dependencies Resolved

==================================================================================================
 Package                      Arch            Version                       Repository       Size
==================================================================================================
Installing:
 postgresql91-server          x86_64          9.1.2-1PGDG.rhel5             pgdg91          5.1 M
Installing for dependencies:
 postgresql91                 x86_64          9.1.2-1PGDG.rhel5             pgdg91          1.5 M
 postgresql91-libs            x86_64          9.1.2-1PGDG.rhel5             pgdg91          217 k

Transaction Summary
==================================================================================================
Install       3 Package(s)
Upgrade       0 Package(s)

Total download size: 6.8 M
Is this ok [y/N]: y
Downloading Packages:
(1/3): postgresql91-libs-9.1.2-1PGDG.rhel5.x86_64.rpm                      | 217 kB     00:00    
(2/3): postgresql91-9.1.2-1PGDG.rhel5.x86_64.rpm                           | 1.5 MB     00:01    
(3/3): postgresql91-server-9.1.2-1PGDG.rhel5.x86_64.rpm                    | 5.1 MB     00:01    
--------------------------------------------------------------------------------------------------
Total                                                             1.5 MB/s | 6.8 MB     00:04    
Running rpm_check_debug
Running Transaction Test
Finished Transaction Test
Transaction Test Succeeded
Running Transaction
  Installing     : postgresql91-libs                                                          1/3
  Installing     : postgresql91                                                               2/3
  Installing     : postgresql91-server                                                        3/3

Installed:
  postgresql91-server.x86_64 0:9.1.2-1PGDG.rhel5                                                 

Dependency Installed:
  postgresql91.x86_64 0:9.1.2-1PGDG.rhel5       postgresql91-libs.x86_64 0:9.1.2-1PGDG.rhel5     

Complete!



サービスの起動

インストールと同時にpostgresというユーザーが作成されています。

$ id postgres
uid=26(postgres) gid=26(postgres) groups=26(postgres)

PostgreSQLのバージョンを確認します。

$ psql --version
psql (PostgreSQL) 9.1.2
contains support for command-line editing

サービスの名前を確認します。

$ sudo /sbin/chkconfig --list | grep postgresql

サービス名はpostgresql-9.1でした。

postgresql-9.1      0:off     1:off     2:off     3:off     4:off     5:off     6:off

自動起動が無効になっているので、有効にします。

$ sudo /sbin/chkconfig postgresql-9.1 on

サービスを起動します。

$ sudo /sbin/service postgresql-9.1 start

失敗しました。エラーメッセージにはservice postgresql-9.1.2 initdbを使って初期化するように、とあります。

/var/lib/pgsql/9.1/data is missing. Use "service postgresql-9.1.2 initdb" to initialize the cluster first.
                                                           [FAILED]

サービス名はpostgresql-9.1の間違いだと思うのですが、、、試しに実行してみます。

$ sudo /sbin/service postgresql-9.1.2 initdb

やはり間違っていました。

postgresql-9.1.2: unrecognized service

postgresql-9.1.2postgresql-9.1に修正して、もう一度実行します。

$ sudo /sbin/service postgresql-9.1 initdb

無事に初期化できました。

Initializing database:                                     [  OK  ]

もう一度、サービスを起動します。

$ sudo /sbin/service postgresql-9.1 start

起動できました。

Starting postgresql-9.1 service:                           [  OK  ]



PostgreSQLの基本操作

ここから先はpostgresユーザーにsuして操作します。デフォルトではログインアカウントと同じユーザー名でPostgreSQLに接続しようとしますが、-Uオプションを使うと別のユーザー名を指定できます。

$ sudo su - postgres
-bash-3.2$

データベースの一覧を表示します。

-bash-3.2$ psql -l
                             List of databases
   Name    |  Owner   | Encoding  | Collate | Ctype |   Access privileges  
-----------+----------+-----------+---------+-------+-----------------------
 postgres  | postgres | SQL_ASCII | C       | C     |
 template0 | postgres | SQL_ASCII | C       | C     | =c/postgres          +
           |          |           |         |       | postgres=CTc/postgres
 template1 | postgres | SQL_ASCII | C       | C     | =c/postgres          +
           |          |           |         |       | postgres=CTc/postgres
(3 rows)