yumでPostgreSQLをインストールしてみよう
NTT オープンソースソフトウェアセンタ 笠原 辰仁
はじめに
この記事では、yum を使った PostgreSQL のインストール方法を紹介します。yum はRedHat Enterprise Linux や CentOS、Fedora などで使用可能な RPM パッケージの管理システムです。RPM パッケージは、インストール時にパッケージ間の依存性を考慮する必要があります。A という RPM パッケージのインストールには B という RPM パッケージが必要になる……といった感じです。yum はこれらの依存関係を判別し、必要となる全てのパッケージを自動でダウンロード・インストールしてくれます。この記事では、Fedora を使ってその方法を紹介していきます。Fedoraを使っていますが、紹介する方法は RedHat Enterprise Linux や CentOS でも同じです。
コミュニティのリポジトリを使う
yumでインストールするRPMパッケージはリポジトリと呼ばれる場所に格納されています。Fedoraには専用のリポジトリとそのリポジトリを使うための設定ファイルが用意されています。しかし、予め用意されているリポジトリでは、PostgreSQLのバージョンが古いことがあります。そのため、最新版のPostgreSQLを使いたい場合には、コミュニティのリポジトリを使うと良いでしょう。
コミュニティのRPMパッケージについて
コミュニティで作成しているRPMパッケージは、yumリポジトリでの提供の他、ftpサーバからも入手できます。双方には違いはありません。yum経由でも手動でも、同じRPMパッケージを使用することになります。
コミュニティのリポジトリを使うための設定ファイルの入手
yumで使用するリポジトリの設定ファイルを入手します。この設定ファイルは/etc/yum.repo.d/配下に置かれる.repoファイルです。コミュニティでは、RPMパッケージとしてこの設定ファイルを提供しています。まず、ここのサイトへアクセスしましょう。(注意:2010年からyumパッケージの配布サイトが変更になりました。)
RPMパッケージは各PostgreSQLのメジャーバージョンとディストリビューション毎に提供されています。なるべく新しいものを使いましょう。画面中央に「 Available PostgreSQL Releases」という項目があります。赤字で「(no longer maintained by upstream)」と記載されているものは、すでにサポートが終了したもの(EOL)になります。(注意:このページはややメンテナンスが遅れることがあります。 正確なEOLについては本家のページを参考にしてください。)
画面上段のに見える「Repo RPMs」をクリックして次のページに進みます。ここで、各PostgreSQLバージョンとディストリビューションの組み合わせのRPMパッケージを選択することになります。CentOS、Fedora、Scientific Linux、RedHat(Enterprise Linux)のそれぞれに対応したRPMがあります。Fedora用をダウンロードします。今回は8.4のFedora用RPMを使います。
ダウンロード場所はどこでも構いません。ダウンロードが終わったら、rootユーザでRPMを以下のコマンドでインストールしましょう。
# rpm -ivh /tmp/pgdg-fedora-8.4-1.noarch.rpm 準備中... ################################# [100%] 1:pgdg-fedora ################################# [100%]
RPMのインストールが終わったら、pgdg-84-fedora.repoファイルが"/etc/yum.repo.d/"配下にインストールされたかチェックします。なお、他の.repoファイルはFedoraで予め用意しているものです。
# ls -l /etc/yum.repos.d/ 合計 20 -rw-r--r--. 1 root root 1785 2009-11-14 00:16 fedora-rawhide.repo -rw-r--r--. 1 root root 1163 2009-11-14 00:16 fedora-updates-testing.repo -rw-r--r--. 1 root root 1105 2009-11-14 00:15 fedora-updates.repo -rw-r--r--. 1 root root 1144 2009-11-14 00:15 fedora.repo -rw-r--r-- 1 root root 438 2008-09-03 22:12 pgdg-84-fedora.repo
以上で設定ファイルの入手は終わりです。
コミュニティのリポジトリを使用するための設定
次に、コミュニティのリポジトリからPostgreSQL関連のRPMを持ってくるように設定をします。PostgreSQL関連のRPMはFedoraのリポジトリにも’あるため、FedoraのリポジトリからはPostgreSQLのパッケージを持ってこないようにします。"/etc/yum.repos.d"配下にあるfedora*.repoのファイルの内、"enabled=1"となっているセクションの末尾に"exclude=postgresql*"という行を追加します。デフォルトの状態であれば、fedora.repoとfedora-update.repoという2つのファイルの[fedora]セクションが該当します。以下は、excludeの設定の追記例です。
# head /etc/yum.repos.d/fedora.repo [fedora] name=Fedora $releasever - $basearch failovermethod=priority baseurl=http://download.fedoraproject.org/pub/fedora/(省略) #mirrorlist=https://mirrors.fedoraproject.org/metalink(省略) gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-fedora-$basearch exclude=postgresql* # ここ★
以上で準備が整いました。
yumでPostgreSQLをインストールする
PostgreSQLをyumでインストールする場合、yumコマンドを端末で実施する方法やGUIユーティリティを用います。今回はyumコマンドを使ってみます。なお、ここまでの設定が済んでしまえば、 「CentOSでPostgreSQLを使ってみよう」で紹介しているGUIを用いた方法も使用することができます。 コマンドよりGUIを使いたい方は、CentOSでの記事を参考にしてみて下さい。
さて、yumにはたくさんのコマンドオプションがありますが、searchとinstallを覚えておけばインストールに必要な最低限の処理はできます。
パッケージ名を調べる
RPMのインストールは"yum install <パッケージ名>"と入力する必要がありますが、指定するRPM名はリポジトリに登録されているものと正確に一致しなければなりません。そのため、目的のパッケージ名を調べるために"yum search"コマンドを使います。以下の様にすると、PostgreSQL関連のパッケージ名とその説明が見られます。
# yum search postgresql (省略) postgresql.x86_64 : PostgreSQL client programs and libraries postgresql-contrib.x86_64 : PostgreSQL 同梱の貢献されたソースとバイナリ (省略)
たくさんのパッケージ名が出力されると思いますが、PostgreSQLを使う上で必要になるのは以下のパッケージとなります。
パッケージ名 | 主に格納しているもの |
---|---|
postgresql-libs | libpqなどのPostgreSQLのライブラリ群。 PostgreSQL以外のパッケージが必要とすることもあります。 |
postgresql | psqlやpg_dumpなどのPostgreSQLのクライアントユーティリティ |
postgresql-server | initdbやpg_ctlなどのPostgreSQLのサーバユーティリティ。 DBMSサーバとして必要な機能はこれに含まれています。 |
postgresql-contrib | pgbenchやpg_statstatementなどのPostgreSQLのcontribモジュール。 |
postgresql-devel | PostgreSQLのヘッダやpg_configなどの開発用モジュール。 |
postgresql-doc | PostgreSQLのドキュメント。 |
postgresql-test | PostgreSQLのリグレッションテスト用モジュール。 |
"yum install postgresql-server"を実行すれば、依存関係上、必要なパッケージを追加で選択しインストールしてれくるので、必要なものはほとんど揃うでしょう。
# yum install postgresql-server (省略) =================================================================== Package Arch Version Repository Size =================================================================== Installing: postgresql-server x86_64 8.4.1-1PGDG.fc11 pgdg84 4.5 M Installing for dependencies: postgresql x86_64 8.4.1-1PGDG.fc11 pgdg84 1.3 M postgresql-libs x86_64 8.4.1-1PGDG.fc11 pgdg84 193 k Transaction Summary =================================================================== Install 3 Package(s) Update 0 Package(s) Remove 0 Package(s) Total download size: 6.0 M Is this ok [y/N]:
yを選択すると、パッケージのダウンロードとインストールが行われます。postgresql-contribやpostgresql-develも便利なコマンドやモジュールを含んでいるので、一緒に入れておくと良いでしょう。以上で、yumによるPostgreSQLのインストールは終わりです。目的のパッケージがちゃんとインストールされたかを"rpm -qa"コマンドで確認しておきましょう。
# rpm -qa | grep postgres postgresql-libs-8.4.1-1PGDG.fc11.x86_64 postgresql-server-8.4.1-1PGDG.fc11.x86_64 postgresql-8.4.1-1PGDG.fc11.x86_64
以上で、PostgreSQLを使う準備が整いました。コミュニティのRPMをインストールした場合、PostgreSQLをソースからインストールした場合とほぼ同様です。一部、postgresql.confのログ設定がデフォルトで残るようにパッチが当たっていますが、Ubuntuなど、特にDebianベースのディストリビューションに見られるような、特殊なラッパースクリプトなどは生成されません。PostgreSQLの使用に関してはオンラインマニュアルに沿って使ってみてください。
なお、本記事では使い方までは解説しません。簡単にPostgreSQLを使ってみたい方は、「CentOSでPostgreSQLを使ってみよう」の記事を参考にしてみて下さい。
FAQ & TIPS
yumを使う上でのFAQやTIPSを記述します。
yumコマンドを打っても何も起こらない
yumはroot権限のあるユーザで行いましょう。また、プロキシを使っている環境の場合、環境変数"http_proxy"と"/etc/yum.conf"のそれぞれにプロキシサーバを指定する必要があります。
=# export http_proxy=http://123.12.0.5:8080 =# tail /etc/yum.conf # PUT YOUR REPOS HERE OR IN separate files named file.repo # in /etc/yum.repos.d # プロキシの指定 export=http://123.12.0.5:8080
[pgdg83-id]って何?
PostgreSQL8.3用の.repoファイルを見ると、-idが付いたセクションがあります。このセクションで扱うリポジトリからは、PostgreSQLが"--enable-integer-datetimes"が有効にされてビルドされているRPMパッケージを入手できます。"--enable-integer-datetimes"は、バージョン8.4からデフォルトで有効になっているconfigureオプションです。timstamp型などの内部形式を選択します。8.3まではこのオプションは無効になっていました。timstamp型などの互換性を図るため、8.3でこのオプションを有効にしたバイナリもコミュニティで用意したわけです。これから新規でPostgreSQLを使う方で8.3を使用する場合は、この-idリポジトリのRPMを使うと良いでしょう。
PostgreSQLの周辺ツールも使いたい場合は?
pgAdminやphppgAdminといった管理ツールや、pgpoolなどのレプリケーションツールも、Fedoraやコミュニティのリポジトリで提供されています。ただし、コミュニティのリポジトリはOSのバージョンやアーキテクチャによって、リポジトリに格納されているパッケージがまちまちです。(例えば、Fedora-11-i386用のリポジトリにpgAdminがありますが、Fedora-12-i386用のリポジトリにはありません……) そのため、PostgreSQL本体以外の周辺ツールをyumでインストールしたい場合には、予め該当のリポジトリにパッケージがあるかを "yum search" で確認しておきましょう。
yumでPostgreSQLのアップデートはできるの?
PostgreSQLのアップデート(8.3.7から8.3.8にするなど、マイナーバージョンを新しくする)に使えます。本記事ではバージョン8.4.1のRPMパッケージがインストールされましたが、新しく8.4.2がリリースされ、 コミュニティの方で8.4.2のRPMパッケージがリポジトリに登録されると、"yum install postgresql"あるいは"yum update postgresql"で最新のマイナーバージョンが適用できます。アップデートできるRPMパッケージが あるかどうかは、"yum check-update"で確認できます。なお、メジャーバージョンは変わりません。メジャーバージョンを新しくしたい方は、下記を参考にして下さい。
yumでPostgreSQLのアップグレードはできるの?
PostgreSQLのアップグレード(8.3から8.4にするなど、メジャーバージョンを新しくする)にも使えます。ただし、実行ファイルやライブラリの差し替えのみです。データのダンプリ/リストアは別途手動で行います。 この場合、前述のリポジトリ設定用ファイルを差し替える形になります。 例えば、今回の例では"pgdg-fedora-8.4-1.noarch.rpm"をダウンロードして使いましたが、8.5に乗り換えたい場合は"pgdg-fedora-8.5-1.noarch.rpm"をダウンロードしインストールすればOKです。 "/etc/yum.repos.d/"配下に8.5用の.repoファイルができるので、古い8.4用の.repoファイルを削除ないし別の箇所に移します。これで"yum install postgresql"とすれば、8.4の各種実行ファイルや ライブラリが8.5に差し替えられます。
なお、PostgreSQL9.0リリース時から、RPMでインストールされるファイルの配置ポリシーが変更され、複数のメジャーバージョンのPostgreSQLが同居できるようになっています。詳細はこちらを参照してください。