1.5. インストール手順

  1. 設定

    インストール手順の最初のステップは、自分のシステム用にソースツリー を設定し、使いたいオプションを選ぶことです。これは configureスクリプトを実行することで行ないます。 デフォルトインストールでは単に下記のように入力します。

    ./configure
    このスクリプトは、システムに依存する変数の値を予測しオペレーティング システムの回り合わせを探知するためのたくさんのテストを実行し、 最終的にビルドツリーの中になにを見つけたかを記録するファイルを 作成します。

    デフォルトの設定はサーバとユーティリティや、C コンパイラのみを必要とする 全てのクライアントアプリケーションとインタフェースを構築します。 全てのファイルはデフォルトで/usr/local/pgsql の下にインストールされます。

    ビルドとインストールプロセスは以下のうちの一つ以上のコマンドライン オプションをconfigureに与えることで カスタマイズできます。

    --prefix=PREFIX

    /usr/local/pgsqlの代わりにPREFIX ディレクトリの下に全てのファイルをインストールします。 実際のファイルは様々なサブディレクトリにインストールされます。 PREFIXディレクトリに直接インストールされる ファイルはありません。

    もし特別な必要があれば、以下のオプションで個別のサブ ディレクトリをカスタマイズすることも可能です。

    --exec-prefix=EXEC-PREFIX

    構造に依存するファイルを、PREFIXが設定されたものとは 別の接頭辞EXEC-PREFIXの下でインストールすること もできます。これはホスト間で構造に依存するファイルを共有 するときに便利です。もしこれを省略すると、EXEC-PREFIXPREFIXと同じものとして設定され、構造に 依存するものも依存しないものも、同じツリーの下にインストール されますが多分それが望まれた結果なのでしょう。

    --bindir=DIRECTORY

    実行可能なプログラムのディレクトリを指定します。デフォルトは EXEC-PREFIX/binで、通常は /usr/local/pgsql/binを意味します。

    --datadir=DIRECTORY

    インストールされたプログラムに使われる、読み込みのみのデータファイル 用のディレクトリを設定します。デフォルトは PREFIX/shareです。これは データベースファイルがどこに置かれるかとは全く関係が ないことに注意して下さい。

    --sysconfdir=DIRECTORY

    様々な設定ファイル用のディレクトリで、デフォルトは PREFIX/etcです。

    --libdir=DIRECTORY

    ライブラリと動的ロード可能なモジュールの位置です。デフォルト はEXEC-PREFIX/lib です。

    --includedir=DIRECTORY

    C と C++ のヘッダファイルをインストールするディレクトリです。 デフォルトはPREFIX/includeです。

    --docdir=DIRECTORY

    "マニュアル"ページを除くドキュメントファイルが このディレクトリにインストールされます。デフォルトは PREFIX/docです。

    --mandir=DIRECTORY

    PostgreSQLについてくるマニュアルページは このディレクトリの下のmanx サブディレクトリにインストールされます。デフォルトは PREFIX/manです。

    Note: 共有インストールの場所(例えば /usr/local/include のような)の汚染を減らすために、文字列 "/postgresql"は、すでに "postgres""pgsql"という文字列を 既に含んでいない限り自動的に datadir, sysconfdir, includedir, そして docdir に追加されます。例えば、もし/usr/localを 接頭辞として選んだ場合、C のヘッダファイルは /usr/local/include/postgresqlにインストール されますが、もし接頭辞が/opt/postgresだった 場合、それらは/opt/postgres/includeの の下にインストールされます。

    --with-includes=DIRECTORIES

    DIRECTORIES はコロンで区切られたディレクトリ のリストで、コンパイラがヘッダファイルの検索をするリストに 追加されます。もしオプションのパッケージ (GNU Readlineのような) を非標準の場所にインストールしてある場合、このオプションと 対応する--with-librariesオプションもおそらく 使う必要があるでしょう。

    Example: --with-includes=/opt/gnu/include:/usr/sup/include.

    --with-libraries=DIRECTORIES

    DIRECTORIESはライブラリ検索のための ディレクトリのコロンで区切られたリストです。もし標準ではない 場所にパッケージをインストールした場合、このオプション (と対応する--with-includesオプション) を使わなくてはならないでしょう。

    Example: --with-libraries=/opt/gnu/lib:/usr/sup/lib.

    --enable-locale

    ロケールサポートを可能にします。ロケールサポートを使うと 性能は落ちますが、もし英語以外の環境にいる場合はこれが 必要になるでしょう。

    --enable-recode

    シングルバイト文字セットで recode サポートを可能にします。この 機能に関しては Section 5.3を見て下さい。

    --enable-multibyte

    マルチバイト文字コードの使用を可能にします。これは主に 日本語、韓国語、中国語といった言語のためのものです。 詳細は Section 5.2 を読んで下さい。

    --with-pgport=NUMBER

    NUMBERをサーバとクライアントのデフォルトポート番号 として設定しますデフォルトは 5432 です。ポートを後で変えることは 常に可能ですが、もしここで指定する場合、サーバとクライアントの 両方が同じデフォルトをコンパイルされていなければなりません。 これはとても便利です。

    --with-CXX

    C++ インタフェースライブラリを構築します。

    --with-perl

    Perl インタフェースモジュールを構築します。Perl インタフェース は Perl モジュールの通常の場所(典型的には /usr/lib/perl)にインストールされるので、 インストール手順を実行するためには root アクセスを持たなければ なりません(step 4参照)。このオプションを 使うためには Perl 5 をインストールする必要があります。

    --with-python

    Python インタフェースモジュールを構築します。Python モジュール をデフォルトの場所 (/usr/lib/pythonx.y) にインストールするためには、root アクセスを持つ必要があります。 このオプションを使うためには Python をインストールし、システム が共有ライブラリをサポートしている必要があります。もし 代わりに新しい完全なインタプリタバイナリを構築したい場合、 それは手動で行なわなければなりません。

    --with-tcl

    Tcl/Tk を必要とする部分、libpgtcl、 pgtclsh、 pgtksh、 pgaccess、 そして PL/Tcl を構築します。 --without-tkについては下記を見て下さい。

    --without-tk

    もし--with-tclとこのオプションを指定した場合、 Tkを必要とするプログラム (つまり pgtksh と pgaccess) は除外されます。

    --with-tclconfig=DIRECTORY, --with-tkconfig=DIRECTORY

    Tcl/Tk は、Tcl と Tk のインタフェースのモジュールを構築する ために必要な特定の設定情報を含むファイル tclConfig.shtkConfig.sh をインストールします。 これらのファイルは通常、自動的に一般的に知られる場所に インストールされますが、もしTcl か Tk の別のバージョンを 使いたい場合はインストールしたいディレクトリを指定できます。

    --enable-odbc

    ODBC ドライバパッケージを構築します。

    --with-odbcinst=DIRECTORY

    ODBC ドライバが自身のodbcinst.ini設定ファイル を探すディレクトリを指定します。デフォルトは /usr/local/pgsql/etc、もしくは --sysconfdirオプションで指定した場所です。 デフォルトファイルはそこにインストールされます。もし odbcinst.iniファイルをいくつかの ODBC ドライバ 間で共有するつもりであれば、このオプションを使ったほうが よいでしょう。

    --with-krb4=DIRECTORY, --with-krb5=DIRECTORY

    Kerberos 認証のサポートを構築します。Kerberos 4 か 5 の どちらかのバージョンを使うことができますが、両方使うこと はできません。DIRECTORY引数は Kerberos インストール の root ディレクトリを指定します。/usr/athena がデフォルトとして仮定されます。もし関係するヘッダファイルと ライブラリが共通の親ディレクトリの下になければ、 --with-includes--with-libraries オプションをさらに追加して使わなければなりません。一方、もし 必要とされるファイルがデフォルトで検索される場所 (例えば /usr/lib)にある場合、引数はなしでも 構いません。

    configure は、次に進む前に Kerberos インストールが できていることを確認するために、必要とされるヘッダファイルと ライブラリをチェックします。

    --with-krb-srvnam=NAME

    Kerberos の主サービスの名前です。デフォルトは"postgres" です。これを変える必要は特にないでしょう。

    --with-openssl=DIRECTORY

    (暗号化された)SSL接続のサポートをつけて構築します。 これはOpenSSLがインストールされていることを 必要とします。DIRECTORY引数はOpenSSL インストールの root ディレクトリを指定します。デフォルトは /usr/local/sslです。

    configureは、次に進む前にOpenSSL のインストールができていることを確認するために、 必要とされるヘッダファイルとライブラリをチェックします。

    --with-java

    JDBC ドライバとそれに関連する Java パッケージを構築します。このオプションはAnt がインストールされていることを必要とします(もちろん JDKもです)。さらに詳しいことは プログラマガイドの中の JDBC ドライバのドキュメントを参照してください。

    --enable-syslog

    PostgreSQL が syslog 機能を使うことを 可能にします。(このオプションを使うからといって、syslog で ログをとらなければいけないということではありませんし、 デフォルトでそれが使われるというわけでもありません。 ただ単に実行時にこのオプションを使うことが可能になるということです。)

    --enable-debug

    全てのプログラムとライブラリをデバッグシンボルをつけてコンパイルします。 これはデバッガを通して問題を分析するプログラムを実行することが できるということです。これはインストールされた実行プログラム のサイズを大幅に拡大し、通常では非 gcc コンパイラ上ではコンパイラ 最適化も不可能にするため、遅くなります。しかし、シンボルを 有効にしておくことは、発生した問題に対応するのに非常に便利です。 現在のところ、このオプションはプロダクションインストールの あまり重要ではない値として見なされていますが、開発作業をしているか ベータバージョンを動かしている場合は有効にしておくべきです。

    --enable-cassert

    多くの"あり得ない"状態をテストする、 サーバのassertionチェックを可能にします。これは コード開発目的にとっては計り知れない価値がありますが、 このテストは他の動作をやや遅くします。さらに、テストを有効に しているからといってサーバの安定性を向上させるとも限らないのです! 宣言チェックは度合いによって分類されていないので、比較的 害のないと思われるバグでも、もし宣言失敗をトリガすれば postmaster が再起動してしまいます。現在ではこのオプションは 製産用の使用には勧められませんが、開発作業やベータバージョン を動かしている場合は有効にしておくべきです。

    もし configureが選ぶものと違う C や C++ コンパイラを使いたいという場合、環境変数 CCCXXのどちらかを選んだプログラム によって設定することができます。同様に、デフォルトコンパイラ フラグはCFLAGSCXXFLAGS変数 で無効にすることもできます。例えば下記のようになります。

    env CC=/opt/bin/gcc CFLAGS='-02 -pipe' ./configure

  2. ビルド

    ビルドを始めるためには下記のように入力します。

    gmake
    (GNU makeを使うことを覚えていて下さい。) ビルドは 5 分から 30 分ほどかかります。表示される最後の行は 下記のようになります。
     All of PostgreSQL is successfully made. Ready to install. 

  3. レグレションテスト

    もし新しく構築されたサーバをインストールする前に試したい場合、 この時点でレグレションテストを実行できます。レグレションテスト はPostgreSQLがユーザのマシン上で開発者が 期待するように動くことをテストするためのものです。 下記のように入力してください。

    gmake check
    エラーメッセージの言葉づかいや浮動小数点の結果によって、 いくつかのテストが失敗することもあります。 Chapter 12 contains にはテスト結果の表示に関する詳しい情報があります。同じコマンドを 入力することで、後にいつでもテストを繰りかえすことが出来ます。

  4. ファイルのインストール

    Note: もし既存のシステムのアップグレードをしていて、古いファイルの 上から新しいファイルをインストールするという場合は、上記の Section 1.4で説明されてように、データを バックアップして古いサーバをこの段階までにシャットダウンしておいた はずです。

    PostgreSQL をインストールするためには、 下記のように入力します。

    gmake install
    これは、ファイルをstep 1で指定されたディレクトリ にインストールします。その領域に書き込むための権限を持っていることを 確認して下さい。通常はこのステップは root で行なう必要があります。 代わりに目標となるディレクトリを前もって作成し、ふさわしい権限を 調整することも可能です。

    もし root ユーザ以外で上記のコマンドを実行して Perl か Python インタフェースを構築した場合、インストールの一部はおそらく 失敗しています。その場合は、root ユーザになり下記を実行します。

    gmake -C src/interfaces/perl5 install
    gmake -C src/interfaces/python install
    Perl の構築環境の奇癖のため、最初のコマンドは実際にインタフェース を完成させインストールします。これは害はありませんが、奇妙です。 もしスーパーユーザアクセスを持っていなければ、自分に頼るしか なくなります。必要なファイルを取得し Perl や Python が見つけられる 場所に置くことは可能ですが、その方法は自分で見つけなければ なりません。

    標準インストールは、クライアントアプリケーション開発に必要なヘッダ ファイルのみをインストールします。もしサーバサイドプログラムを 開発する予定があるならば(例えばカスタム関数や C で書かれたデータ型 など)、PostgreSQLの全てを含むツリーを目的の インクルードディレクトリにインストールしたほうが良いでしょう。 そのためには下記を入力します。

    gmake install-all-headers
    これはインストールの作業に 1 もしくは 2 メガバイト追加し、 全てのソースツリーを参照用に保持しない場合にのみ役立ちます。 (もし保持していれば、サーバサイドソフトウエアを構築するときに ソースのインクルードディレクトリを使えばよいのです。)

    Client-only installation. もしクライアントアプリケーションとインタフェースライブラリのみを インストールしたい場合、下記のコマンドを使います。

    gmake -C src/bin install
    gmake -C src/interfaces install
    gmake -C doc install

    インストールを解除するときは、コマンドgmake uninstall を使います。しかし、これは Perl や Python インタフェースは削除 せず、ディレクトリは何も削除しません。

インストールが終ったら、gmake cleanコマンドを使って ソースツリーからビルドファイルを削除しスペースに余裕を与える ことができます。これは設定プログラムが作る選択子を保持するので、 後でgmakeコマンドで全てを再ビルドできます。ソースツリー を配布された時の状態に戻したい場合は、gmake distclean コマンドを使います。もし同じソースツリーからいくつかのプラットフォーム を構築する場合、これを実行しそれぞれのビルドに設定し直さなければ なりません。