他のバージョンの文書 16 | 15 | 14 | 13 | 12 | 11 | 10 | 9.6 | 9.5 | 9.4 | 9.3 | 9.2 | 9.1 | 9.0 | 8.4 | 8.3 | 8.2 | 8.1 | 8.0 | 7.4 | 7.3 | 7.2

17.4. Mesonを使った構築とインストール #

17.4.1. 簡易版 #

meson setup build --prefix=/usr/local/pgsql
cd build
ninja
su
ninja install
adduser postgres
mkdir -p /usr/local/pgsql/data
chown postgres /usr/local/pgsql/data
su - postgres
/usr/local/pgsql/bin/initdb -D /usr/local/pgsql/data
/usr/local/pgsql/bin/pg_ctl -D /usr/local/pgsql/data -l logfile start
/usr/local/pgsql/bin/createdb test
/usr/local/pgsql/bin/psql test

この節の残りで詳細を説明します。

17.4.2. インストール手順 #

  1. 設定

    インストール手順の最初のステップは、システムに合わせてソースツリーを設定し、使用するオプションを選択することです。 ビルドディレクトリを作成して設定するには、meson setupコマンドから始めます。

    meson setup build
    

    セットアップコマンドはbuilddirsrcdir引数を取ります。 srcdirが指定されていない場合、Mesonは現在のディレクトリとmeson.buildの場所に基づいてsrcdirを推測します。 builddirは必須です。

    meson setupを実行すると、ビルド設定ファイルがロードされ、ビルドディレクトリが設定されます。 さらに、いくつかのビルドオプションをMesonに渡すこともできます。 一般的に使用されるオプションは、以下の節で説明します。 例えば

    # configure with a different installation prefix
    meson setup build --prefix=/home/user/pg-install
    
    # configure to generate a debug build
    meson setup build --buildtype=debug
    
    # configure to build with OpenSSL support
    meson setup build -Dssl=openssl
    

    ビルドディレクトリの設定は、一度だけ行うステップです。 新しいビルドの前に再設定するには、単にmeson configureコマンドを使用します。

    meson configure -Dcassert=true
    

    meson configureの一般的に使用されるコマンドラインオプションについては17.4.3で説明します。

  2. 構築

    デフォルトでは、MesonNinja構築ツールを使用します。 Mesonを使用してPostgreSQLをソースからビルドするには、ビルドディレクトリ内でninjaコマンドを使用するだけです。

    ninja
    

    Ninjaは、コンピュータのCPU数を自動的に検出し、それに応じて並列化します。 コマンドライン引数-jで並列処理の数をオーバーライドすることができます。

    最初の設定ステップの後、ninjaはコンパイルに必要な唯一のコマンドです。 ソースツリーをどのように変更しても(完全に新しい場所に移動しない限り)、Mesonは変更を検出し、それに応じて自身を再生成します。 これは、複数のビルドディレクトリがある場合に特に便利です。 多くの場合、それらの1つは開発(「デバッグ」ビルド)に使用され、他のものは時々(「静的分析」ビルドなど)使用されます。 対応するディレクトリに移動してNinjaを実行するだけで、どの構成でもビルドできます。

    ninja以外のバックエンドで構築したい場合は、--backendオプションを指定してconfigureを実行し、使用するバックエンドを選択してからmeson compileで構築します。 これらのバックエンドやninjaに渡す他の引数について詳しくは、Mesonのドキュメントを参照してください。

  3. リグレッションテスト

    インストールを行う前に、新しく構築したサーバをテストしたい場合、この時点でリグレッションテストを実行できます。 リグレッションテストとは、使用するマシンにおいてPostgreSQLが、開発者の想定通りに動作することを検証するためのテストのまとまりです。 次のように入力します。

    meson test
    

    (これは root では動作しません。 非特権ユーザとして実行してください。) 第33章にはテスト結果の解釈に関する詳しい情報があります。 同じコマンドを入力することで、後にいつでもテストを繰り返すことができます。

    実行中のpostgresインスタンスに対してpg_regressとpg_isolation_regressのテストを実行するには、--setup runningmeson testの引数として指定します。

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

    注記

    もし既存のシステムのアップグレードをする場合、DBクラスタのアップグレードの解説が記載されている19.6を参照してください。

    PostgreSQLがビルドされたら、ninja installコマンドを実行するだけでインストールできます。

    ninja install
    

    これは、ファイルをステップ 1で指定されたディレクトリにインストールします。 その領域に書き込むための権限を持っていることを確認してください。 通常はこのステップをrootで行う必要があります。 代わりに対象とするディレクトリを前もって作成し、適切に権限を調整することも可能です。 この標準的なインストール方法では、クライアントアプリケーションの開発に必要なヘッダファイルと、Cで独自の関数やデータ型を作成するといったサーバ側のプログラムの開発用のヘッダファイルが用意されます。

    ninja installはほとんどの場合に使えるはずですが、余分な出力を抑制する--quietなどのオプションを使いたい場合は、代わりにmeson installを使うこともできます。 meson installとそのオプションについてはMesonドキュメントを参照してください。

アンインストール:  インストールを取り消すには、ninja uninstallコマンドを使用します。

クリーニング:  インストール後、ninja cleanコマンドでソースツリーからビルドされたファイルを削除することで、ディスク容量を解放できます。

17.4.3. meson setupのオプション #

meson setupのコマンドラインオプションを以下で説明します。 この一覧は完全なものではありません(完全なものを得るにはmeson configure --helpを使ってください)。 ここで取り上げていないオプションはクロスコンパイルのような高度なユースケースのためのもので、標準のMesonドキュメントを参照してください。 これらの引数はmeson setupでも使用できます。

17.4.3.1. インストレーションの位置 #

このオプションはninja install(またはmeson install)がファイルをどこに置くかを制御します。 ほとんどの場合は--prefixオプション(17.4.1参照)で十分です。 特別な必要があるのであれば、この節に書かれた他のオプションを使用して個々のインストレーションサブディレクトリを変更できます。 しかし、異なるサブディレクトリの相対的な位置を変更した場合、インストレーションは再配置不能になります。つまり、インストールの後にディレクトリを移動できないことに注意してください。 (mandocの場所はこの制限の影響を受けません。) 再配置可能インストールのために、後述の-Drpath=falseを使用しようと考えるかもしれません。

--prefix=PREFIX #

/usr/local/pgsql(Unixベースのシステム)またはcurrent drive letter:/usr/local/pgsql(Windows)の代わりにディレクトリPREFIXディレクトリ以下に全てのファイルをインストールします。 ファイルは実際には様々なサブディレクトリにインストールされ、PREFIXディレクトリの直下にインストールされるファイルはありません。

--bindir=DIRECTORY #

実行可能プログラム用のディレクトリを指定します。 デフォルトはPREFIX/binです。

--sysconfdir=DIRECTORY #

各種設定ファイル用のディレクトリを設定します。 デフォルトではPREFIX/etcです。

--libdir=DIRECTORY #

ライブラリや動的ロード可能モジュールをインストールする場所を設定します。 デフォルトはPREFIX/libです。

--includedir=DIRECTORY #

CおよびC++のヘッダファイルをインストールするディレクトリを設定します。 デフォルトはPREFIX/includeです。

--datadir=DIRECTORY #

インストールプログラムが使用する読み取り専用のディレクトリを設定します。 デフォルトはPREFIX/shareです。 これはインストールするデータベースファイルがどこに設置されるかとは関係ないことを覚えておいてください。

--localedir=DIRECTORY #

特にメッセージ翻訳カタログファイルのロケールデータをインストールするディレクトリを設定します。 デフォルトはDATADIR/localeです。

--mandir=DIRECTORY #

PostgreSQL付属のマニュアルページがこのディレクトリ以下の、対応するmanxサブディレクトリにインストールされます。 デフォルトはDATADIR/manです。

注記

/usr/local/includeといった)共用のインストール場所に、システムの他の名前空間に影響を与えることなくPostgreSQLをインストールできるような配慮がなされています。 まず、完全に展開したディレクトリ名にpostgrespgsqlという文字列が含まれていない場合、/postgresqlという文字列が自動的にdatadirsysconfdirdocdirに追加されます。 例えば、接頭辞として/usr/localを使用する場合、ドキュメントは/usr/local/doc/postgresqlにインストールされますが、接頭辞が/opt/postgresの場合は/opt/postgres/docにインストールされます。 クライアントインタフェース用の外部向けCヘッダファイルはincludedirにインストールされ、名前空間の問題はありません。 内部向けヘッダファイルやサーバ用ヘッダファイルは、includedir以下の非公開ディレクトリにインストールされます。 各インタフェース用のヘッダファイルにアクセスする方法についての情報は、そのインタフェースのドキュメントを参照してください。 最後に、適切であれば、動的ロード可能モジュール用にlibdir以下にも非公開用のサブディレクトリが作成されます。

17.4.3.2. PostgreSQLの機能 #

この節に書かれたオプションは、デフォルトでは構築されないPostgreSQLの様々な機能を構築できるようにするものです。 これらのほとんどは、17.1で説明されている追加ソフトウェアが必要であり、必要なソフトウェアが見つかった場合は自動的に有効になります。 これらの機能が必要な場合はenabledに、必要でない場合はdisabledに設定して、この動作を手動で変更できます。

PostgreSQL固有のオプションを指定するには、オプション名の先頭に-Dを付ける必要があります。

-Dnls={ auto | enabled | disabled } #

各国語サポート(NLS)を有効または無効にします。 これは、Gettext APIの実装が英語以外の言語でメッセージを表示する機能です。 デフォルトは自動で、Gettext APIの実装が見つかった場合は自動的に有効になります。

-Dplperl={ auto | enabled | disabled } #

PL/Perlサーバサイド言語を構築します。 デフォルトは自動です。

-Dplpython={ auto | enabled | disabled } #

PL/Pythonサーバサイド言語を構築します。 デフォルトは自動です。

-Dpltcl={ auto | enabled | disabled } #

PL/Tclサーバサイド言語を構築します。 デフォルトは自動です。

-Dtcl_version=TCL_VERSION #

PL/Tclのビルド時に使用するTclバージョンを指定します。

-Dicu={ auto | enabled | disabled } #

ICUライブラリのサポートを有効にして構築します。これによりICU照合機能が使用できるようになります。 24.2を参照してください。) デフォルトは自動で、ICU4Cパッケージがインストールされている必要があります。 ICU4Cの要求される最小のバージョンは現在4.2です。

-Dllvm={ auto | enabled | disabled } #

LLVMに基づいたJITコンパイル第32章を参照)のサポートを有効にして構築します。 これには、LLVMライブラリがインストールされている必要があります。 LLVMの要求される最小のバージョンは現在3.9です。 デフォルトでは無効です。

要求されるコンパイルオプションを見つけるためにllvm-configが使われます。 llvm-config、それからサポートされるバージョンすべての llvm-config-$versionPATHで探します。 それで正しいバイナリが見つからなければ、正しいllvm-configへのパスを指定するためにLLVM_CONFIGを使ってください。 例えば、以下のとおりです。

-Dlz4={ auto | enabled | disabled } #

LZ4圧縮サポートを有効にして構築します。 デフォルトは自動です。

-Dzstd={ auto | enabled | disabled } #

Zstandard圧縮サポートを有効にして構築します。 デフォルトは自動です。

-Dssl={ auto | LIBRARY } #

SSL(暗号化)接続のサポートを有効にして構築します。 サポートされている唯一のLIBRARYopensslです。 これには、OpenSSLパッケージがインストールされている必要があります。 これを指定すると、必要なヘッダファイルとライブラリがチェックされ、OpenSSLのインストールが十分であるかどうかが確認されてから処理が続行されます。 このオプションのデフォルトは自動です。

-Dgssapi={ auto | enabled | disabled } #

GSSAPI認証のサポートを構築します。 GSSAPIを使用するには、MIT Kerberosがインストールされている必要があります。 多くのシステムでは、GSSAPIシステム(通常MIT Kerberosインストレーションの一部)はデフォルトの検索場所(例えば/usr/include/usr/lib)にインストールされていません。 このような場合、PostgreSQLはpkg-configを照会して、必要なコンパイラとリンカのオプションを検出します。 デフォルトは自動です。 meson configureは、必要なヘッダファイルとライブラリをチェックして、GSSAPIのインストールが十分であることを確認してから続行します。

-Dldap={ auto | enabled | disabled } #

認証および接続パラメータ検索用のLDAPサポートを有効にして構築します。 (詳細は34.18および21.10を参照してください。) Unixでは、OpenLDAPパッケージがインストールされている必要があります。 WindowsではデフォルトのWinLDAPライブラリが使用されます。 デフォルトは自動です。 meson configureは、必要なヘッダファイルとライブラリをチェックして、OpenLDAPのインストールが十分であることを確認してから続行します。

-Dpam={ auto | enabled | disabled } #

PAM(プラガブル認証モジュール)のサポートを有効にして構築します。 デフォルトは自動です。

-Dbsd_auth={ auto | enabled | disabled } #

BSD認証のサポートを有効にして構築します。 (BSD認証フレームワークは今のところOpenBSDだけで利用可能です。) デフォルトは自動です。

-Dsystemd={ auto | enabled | disabled } #

systemdサービス通知のサポートを有効にして構築します。 サーババイナリがsystemdの元で開始する場合には、これは統合を改善しますが、それ以外は影響はありません。 詳細は19.3を参照してください。 デフォルトは自動です。 このオプションを使えるようにするには、libsystemdと関連するヘッダファイルがインストールされている必要があります。

-Dbonjour={ auto | enabled | disabled } #

Bonjour自動サービス検出のサポートを有効にして構築します。 デフォルトは自動で、オペレーティングシステムがBonjourをサポートしていることが必要です。 macOSで推奨します。

-Duuid=LIBRARY #

指定されたUUIDライブラリを使用して(UUIDを生成する関数を提供する)uuid-osspモジュールを構築します。 LIBRARYは以下のいずれかでなければなりません。

  • noneはuuidモジュールを構築しないことを意味します。 これがデフォルトです。

  • bsdはFreeBSD、その他のBSD派生システムにあるUUID関数を使います。

  • e2fse2fsprogsプロジェクトで作られたUUIDライブラリを使います。 このライブラリはたいていのLinuxシステムとmacOSにあり、また、その他のプラットフォームでも入手可能です。

  • osspOSSP UUIDライブラリを使用します。

-Dlibxml={ auto | enabled | disabled } #

libxml2を使用して構築し、SQL/XMLサポートを有効にします。 デフォルトは自動です。 この機能のためにはLibxml2バージョン2.6.23以降が必要です。

通常以外の場所にインストールしたlibxml2インストレーションを使用するためには、pkg-config関連の環境変数を設定するか(そのドキュメントを参照してください)。

-Dlibxslt={ auto | enabled | disabled } #

XMLのXSL変換を行うためにxml2モジュールを有効にしてlibxsltを構築します。 -Dlibxmlも指定しなければなりません。 デフォルトは自動です。

17.4.3.3. 機能の無効化 #

-Dreadline={ auto | enabled | disabled } #

Readlineライブラリ(およびlibedit)の使用を可能にします。 このオプションは自動的に有効になり、psqlでのコマンドライン編集と履歴が可能になります。 強く推奨されます。

-Dlibedit_preferred={ true | false } #

GPLライセンスのReadlineではなくBSDライセンスのlibeditライブラリを優先して使用します。 このオプションは両方のライブラリがインストールされている場合にのみ重要です。その場合デフォルトでReadlineが使用されます。

-Dzlib={ auto | enabled | disabled } #

Zlibライブラリの使用を有効にします。 デフォルトは自動で、pg_dumppg_restorepg_basebackupでの圧縮アーカイブのサポートが有効になります。 これを使用することをお勧めします。

-Dspinlocks={ true | false } #

このオプションはデフォルトではtrueに設定されています。 falseに設定すると、プラットフォームに対するPostgreSQLのCPUスピンロックサポートがない場合でもビルドが成功します。 スピンロックのサポートの欠落により、性能は悪化します。 したがって、このオプションは、構築が失敗し、その原因が使用するプラットフォームでスピンロックサポートが欠落している場合にのみ使用してください。 使用するプラットフォームにおけるPostgreSQLの構築にこのオプションが必要とされた場合は、PostgreSQL開発者にその問題を報告してください。

-Datomics={ true | false } #

このオプションはデフォルトではtrueに設定されています。 falseに設定すると、CPU不可分操作の使用を無効にします。 このオプションはそのような操作のないプラットフォームでは何もしません。 そのような操作のあるプラットフォームでは、これにより性能が低下するでしょう。 このオプションはデバッグや性能比較をする場合にのみ有用です。

17.4.3.4. 構築プロセスの詳細 #

--auto_features={ auto | enabled | disabled } #

このオプションを設定すると、必要なソフトウェアが見つかった場合に自動的に有効になるauto機能の値を上書きできます。 これは手動で設定することなく、すべてのoptional機能を一度に無効または有効にする場合に便利です。 このパラメータのデフォルト値は自動です。

--backend=BACKEND #

Mesonが使用するデフォルトのバックエンドはninjaで、ほとんどのユースケースに対応できます。 ただし、Visual Studioと完全に統合したい場合は、BACKENDvsに設定します。

-Dc_args=OPTIONS #

このオプションは、Cコンパイラに追加のオプションを渡すために使用できます。

このオプションは、Cリンカに追加のオプションを渡すために使用できます。

-Dextra_include_dirs=DIRECTORIES #

DIRECTORIESには、コンパイラがヘッダファイルを検索するディレクトリのリストをカンマで区切って指定します。 (GNU Readlineなどの)オプションのパッケージが非標準的な場所にインストールされている場合、このオプションと、おそらく対応する-Dextra_lib_dirsオプションを使用する必要があります。

例: -Dextra_include_dirs=/opt/gnu/include,/usr/sup/include

-Dextra_lib_dirs=DIRECTORIES #

DIRECTORIESには、ライブラリを検索するディレクトリのリストをカンマで区切って指定します。 パッケージが非標準的な場所にインストールされている場合は、おそらくこのオプション(と対応する-Dextra_include_dirsオプション)を使用する必要があります。

例: -Dextra_lib_dirs=/opt/gnu/lib,/usr/sup/lib

-Dsystem_tzdata=DIRECTORY #

PostgreSQLは、日付時刻に関する操作で必要な、独自の時間帯データベースを持ちます。 実際のところ、この時間帯データベースはFreeBSD、Linux、Solarisなどの多くのオペレーティングシステムで提供されるIANA時間帯データベースと互換性があります。 このため、これを再びインストールすることは冗長です。 このオプションが使用されると、DIRECTORYにあるシステムが提供する時間帯データベースがPostgreSQLソース配布物に含まれるものの代わりに使用されます。 DIRECTORYは絶対パスで指定しなければなりません。 /usr/share/zoneinfoがオペレーティングシステムの一部でよく使われます。 インストール処理が時間帯データの不一致、またはエラーがあることを検知しないことに注意してください。 このオプションを使用する場合、指定した時間帯データがPostgreSQLで正しく動作するかどうかを検証するためにリグレッションテストを実行することが推奨されています。

このオプションは、対象オペレーティングシステムを熟知しているパッケージ配布者を主な対象としたもの。 このオプションを使用する大きな利点は、多くの局所的な夏時間規則の変更があってもPostgreSQLパッケージを更新する必要がないことです。 他の利点として、時間帯データベースファイルをインストール時に構築する必要がありませんので、PostgreSQLのクロスコンパイルをより簡単に行うことができます。

-Dextra_version=STRING #

PostgreSQLバージョン番号にSTRINGを追加します。 これは、例えば、リリースされていないGitスナップショットからビルドしたバイナリや、git describe識別子やディストリビューションパッケージリリース番号のような追加のバージョン文字列のあるカスタムパッチを含むバイナリに印をつけるために使えます。

-Drpath={ true | false } #

このオプションは、デフォルトでtrueに設定されています。 falseに設定すると、PostgreSQLの実行ファイルがインストレーションのライブラリディレクトリ(--libdirを参照してください)にある共有ライブラリを探すよう指示する印を付けません。 ほとんどのプラットフォームでは、この印付けはライブラリディレクトリへの絶対パスを利用しますので、後でインストレーションを再配置したときには役に立たないでしょう。 ですので、実行ファイルが共有ライブラリを見つける他の方法を提供する必要があるでしょう。 通常は、オペレーティングシステムの動的リンカがライブラリディレクトリを探すよう設定することが必要です。詳細は17.5.1を参照してください。

-DBINARY_NAME=PATH #

PostgreSQLを構築するのに必要なプログラム(オプションフラグ付きまたはオプションフラグなし)が標準以外のパスに格納されている場合、meson configureに手動で指定することができます。 これがサポートされているプログラムの完全なリストは、meson configureを実行することで確認できます。例:

meson configure -DBISON=PATH_TO_BISON

17.4.3.5. ドキュメンテーション #

ドキュメントの構築に必要なツールについては、J.2を参照してください。

-Ddocs={ auto | enabled | disabled } #

HTMLおよびman形式でドキュメントを構築できるようにします。 デフォルトは自動です。

-Ddocs_pdf={ auto | enabled | disabled } #

PDF形式でのドキュメント作成を有効にします。 デフォルトは自動です。

-Ddocs_html_style={ simple | website } #

どのCSSスタイルシートを使用するかを制御します。 デフォルトはsimpleです。 これをwebsiteに設定すると、postgresql.orgのスタイルシートがHTMLドキュメントに参照されます。

17.4.3.6. その他 #

-Dpgport=NUMBER #

サーバとクライアントのデフォルトのポート番号をNUMBERに設定します。 デフォルトは5432です。 このポートは後でいつでも変更できますが、ここで指定した場合、サーバとクライアントはコンパイル時に同じデフォルト値を持つようになります。 これは非常に便利です。 通常、デフォルト以外の値を選択すべき唯一の理由は、同じマシンで複数のPostgreSQLを稼働させることです。

-Dkrb_srvnam=NAME #

GSSAPIで使用されるKerberosのサービスプリンシパルのデフォルトの名前です。 デフォルトではpostgresです。 これを変える理由はWindows環境のために構築しているのでない限り、特にありません。 Windows環境のために構築している場合は大文字のPOSTGRESに設定する必要があります。

-Dsegsize=SEGSIZE #

セグメントサイズをギガバイト単位で指定します。 大規模なテーブルはこのセグメントサイズと同じサイズの複数のオペレーティングシステムのファイルに分割されます。 これにより多くのプラットフォームで存在するファイルサイズ上限に関する問題を防ぎます。 デフォルトのセグメントサイズは1ギガバイトで、サポートされるすべてのプラットフォームで安全です。 使用するオペレーティングシステムがラージファイルをサポートしていれば(最近はほとんどサポートしています)、より大きなセグメントサイズを使用できます。 非常に大規模なテーブルで作業する時のファイル記述子の消費数を減らすために、これが役に立つでしょう。 しかし、プラットフォーム、または使用予定のファイルシステムでサポートされる値以上に大きな値を指定しないように注意してください。 tarなどの、使用したいその他のツールにも使用できるファイルサイズに制限があることがあります。 絶対に必要ではありませんが、この値を2のべき乗にすることを勧めます。

-Dblocksize=BLOCKSIZE #

ブロックサイズをKB単位で設定します。 これはテーブル内のストレージとI/Oの単位です。 デフォルトの8KBはほとんどの場合に適していますが、特別な場合には他の値が有用な場合もあります。 値は1から32(KB)までの2の累乗でなければなりません。

-Dwal_blocksize=BLOCKSIZE #

WALブロックサイズをKB単位で設定します。 これはWALログ内のストレージとI/Oの単位です。 デフォルトの8KBはほとんどの場合に適していますが、特別な場合には他の値が有用な場合もあります。 値は1から64(KB)までの2の累乗でなければなりません。

17.4.3.7. 開発者向けオプション #

この節のオプションのほとんどは、PostgreSQLを開発したりデバッグしたりするために重要なものです。 --enable-debugを除いて、実運用での構築には勧められません。--enable-debugはバグに出くわすという不幸な出来事の時に詳細なバグレポートが得られるので有用かもしれません。 DTraceをサポートするプラットフォームでは、-Ddtraceを実運用で使うことも適当かもしれません。

サーバ内でコードの開発に使われるインストレーションを構築する場合には、少なくともオプション--buildtype=debug-Dcassert optionsを使うことをお勧めします。

--buildtype=BUILDTYPE #

このオプションは、使用するビルドタイプを指定するために使用できます。 デフォルトはdebugoptimizedです。 このオプションが提供するものよりもデバッグシンボルと最適化レベルを細かく制御したい場合は、--debug--optimizationフラグを参照してください。

一般的に使用されるビルドタイプは、plaindebugdebugoptimizedreleaseです。 これらについての詳細はMesonのドキュメントを参照してください。

--debug #

すべてのプログラムとライブラリをデバッグシンボル付きでコンパイルします。 これは、問題を解析するためにデバッガ内でプログラムを実行できることを意味します。 これはインストールする実行形式ファイルのサイズをかなり大きくし、また、GCC以外のコンパイラでは、通常はコンパイラによる最適化が行われなくなりますので、低速になります。 しかし、デバッグシンボルが利用できるということは、発生した問題に対応する時に非常に便利です。 現在のところ、GCCを使用している場合にのみ、稼働用のインストレーションにこのオプションを使用することを推奨します。 しかし、開発作業時やベータ版を実行する時は、常にこれを有効にすべきです。

--optimization=LEVEL #

最適化レベルを指定します。 LEVELは{0,g,1,2,3,s}のいずれかに設定できます。

--werror #

このオプションを設定すると、コンパイラは警告をエラーとして扱います。 これはコード開発に役立ちます。

-Dcassert={ true | false } #

サーバにおける、多くのあり得ない状態をテストするアサーションチェックを有効にします。 これは、プログラムの開発のためには測り知れない価値がありますが、このテストによりサーバはかなり低速になります。 また、このテストを有効にしても、サーバの安定性が向上するとは限りません! アサーションチェックは、重要度によって分類されていませんので、比較的害がないようなバグでも、アサーション失敗をトリガとした、サーバの再起動が行われてしまいます。 稼働用にこのオプションを使用することは推奨されませんが、開発作業時やベータ版を実行する場合は、これを有効にすべきです。

-Dtap_tests={ auto | enabled | disabled } #

Perl TAPツールを使ったテストを有効にします。 デフォルトは自動で、これにはPerlのインストールとPerlモジュールIPC::Runが必要です。 詳細は33.4を参照してください。

-DPG_TEST_EXTRA=TEST_SUITES #

特別なソフトウェアを必要とするテストスイートを実行できるようにします。 このオプションは空白で区切られたリストを引数として受け付けます。 詳細は33.1.3を参照してください。

-Db_coverage={ true | false } #

GCCを使用している場合、すべてのプログラムとライブラリはコードカバレッジテスト機構付きでコンパイルされます。 実行すると、これらは構築用ディレクトリ内にコードカバレッジメトリックを持ったファイルを生成します。 詳細は33.5を参照してください。 このオプションはGCC専用であり、また、開発作業中に使用するためのものです。

-Ddtrace={ auto | enabled | disabled } #

動的追跡ツールDTraceのサポートを有効にしてPostgreSQLをコンパイルします。 より詳細な情報は28.5を参照してください。

dtraceプログラムを指し示すためにDTRACEオプションを設定します。 dtraceは通常、PATH内に存在しない可能性がある/usr/sbin以下にインストールされていますので、この設定はよく必要になります。

-Dsegsize_blocks=SEGSIZE_BLOCKS #

リレーションのセグメントサイズをブロック単位で指定します。 -Dsegsizeとこのオプションの両方が指定されている場合、このオプションが優先されます。 このオプションは、セグメント関連のコードをテストする開発者向けです。