PostgreSQLのインストール

(2007.10.23) ページを分割。

PostgreSQL のインストールについて。

ソフトウェア開発でのデータベースの利用は、基礎から学ぶデータベースプログラミング を参照してください。

# UNIX でバイナリパッケージを使う

[2021.5] このセクション見直し。

Linuxディストリビューションや他のUNIX OSでは、バイナリパッケージを使います。

PostgreSQL 公式バイナリ

主なディストリビューションなどについては, PostgreSQL の公式バイナリがあります。こちらを使いましょう。PostgreSQL: Downloads

対応OS:

  • Linux - Debian, Red Hat/CentOS (Fedora含む), SUSE, Ubuntu, Other Linux
  • BSD - OpenBSD, FreeBSD, NetBSD
  • macOS
  • Windows
  • Solaris [2021.5] Solaris バイナリパッケージは, もはや提供されない。ソースコードからビルドする。

Fedora については, PostgreSQL 公式バイナリもありますが、Fedora の upgradeサイクルと合わないので、無理にこちらを選ぶこともありません。しかし、pgAdmin 4 は PostgreSQL 公式にのみ収録されているので、併せて入れたいときはこちらを選びます。

CentOS 8の例

[[2020.12 CentOS 8 の PostgreSQL は, v10.14. 今から使うにはやや古い。PostgreSQL 公式バイナリを使って, その時点の最新版を入れるのが吉。

CentOS 8 用の公式バイナリリポジトリは, v9.5, v9.6, v10, v11, v12, v13 が全部入る。目的のヴァージョン以外はリポジトリを disable すればいい。

pg_filedump はまだ PostgreSQL v12 までのパッケージしか収録されていない。v12を有効にするか、収録まで待つか、ソースコードから入れるか。ソースコードはこちら; Pg filedump - PostgreSQL wiki

リポジトリをインストール;

# dnf install -y https://download.postgresql.org/pub/repos/yum/reporpms/EL-8-x86_64/pgdg-redhat-repo-latest.noarch.rpm

CentOS のほうのモジュールの無効化. 必須.

# dnf -qy module disable postgresql

パッケージのインストール。

# dnf install postgresql13-server

初期化、起動、有効化。

# systemctl enable postgresql-13
Created symlink /etc/systemd/system/multi-user.target.wants/postgresql-13.service → /usr/lib/systemd/system/postgresql-13.service.
# /usr/pgsql-13/bin/postgresql-13-setup initdb
Initializing database ... OK

# systemctl start postgresql-13

2020.12 ここまで.]]

Fedora

Fedora 34 では, PostgreSQL v13.2 がパッケージされています。

[2021.5] postgresql-devel パッケージ (クライアント用ヘッダ等) は、Fedora 30 から名前が libpq-devel に変更になっている。

このほか, rhdb-utils パッケージで pg_filedump コマンドが提供される。

これらを yum コマンドなどでインストールすればいい。

# Windows版のバイナリ

(2005.8.28 この節追加。)

Windowsでは、PostgreSQLはバイナリパッケージでインストールするのが簡単。このパッケージにはpgAdmin IIIが含まれる。また、別のサーバにPostgreSQLをインストールする場合でも、pgAdmin IIIだけのパッケージがあるので、これをインストールしておくと何かと便利。

Windows用のPostgreSQL 8.0バイナリ版のインストーラを使ってみた。インストールするときにエンコーディングを「UNICODE (UTF-8)」にすると、どうもinitdbでエラーになるみたい。EUC-JPにする。

Note.

※最近のバージョンでは、問題なくUNICODEにできる。

PostgreSQLに接続するデータベースユーザ名を決定し、それにふさわしいようにPostgreSQL認証ファイル pg_hba.conf を編集する。(後述)

# ソースからコンパイルする

Linuxディストリビューションが用意しているPostgreSQLのバージョンが古い場合、自分でソースからコンパイルしてもいい。2007年2月現在、バージョン8.2.3が最新。

Note.

以下の記述はバージョン7.3のころのもので、若干古い。しかし、手順に変わりはないはず。

PostgreSQLパッケージがインストールされている場合には、あらかじめアンインストールしておく。(rpmコマンドの-eオプション。)

# rpm -qa | grep -i postgres
postgresql-libs-7.1.3-2
postgresql-server-7.1.3-2
postgresql-devel-7.1.3-2
postgresql-7.1.3-2
# rpm -e postgresql-libs postgresql-server postgresql-devel postgresql \
         perl-DBD-Pg php-pgsql

PostgreSQLのWebサイトから、ソースコードアーカイブファイルをダウンロードする。

入手したアーカイブファイルを展開する。

$ tar xzvf postgresql-7.3.tar.gz
$ cd postgresql-7.3

コンパイル前の設定をおこなう。インストール先を指定しなければ、/usr/local/pgsqlディレクトリ以下にインストールされる。

$ ./configure --with-tcl

コンパイル。

$ make

念のため、インストールする前に、make checkと打って正常に動作するかテストする。

$ make check

テストに合格すれば、次のように表示される。(PostgreSQLのバージョンによってテストの数は異なる。)

======================
 All 77 tests passed.
======================

もし合格しないテストがあった場合は、次の文書を確認すること。

すべてのテストに合格したら、rootになって、ファイルをインストールする。

$ su
# make install

ファイルのインストールが完了したら、他のプログラムからPostgreSQLの共有ライブラリを使えるようにする。(a) 環境変数LD_LIBRARY_PATHを設定する方法と、(b) /etc/ld.so.confファイルに共有ライブラリのあるディレクトリを追加する方法がある。ここでは、後者を採ってみる。

/etc/ld.so.confファイルを編集し、次の行を追加する。

/usr/local/pgsql/lib

/etc/ld.so.confファイルを編集したら、ldconfigコマンドを実行してシステムに反映させる。

# /sbin/ldconfig

# サイト内関連ページ