他のバージョンの文書 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

18.1. Visual C++またはMicrosoft Windows SDKを使用した構築 #

Microsoftが提供するVisual C++コンパイラスイートを使用してPostgreSQLを構築することができます。 これらのコンパイラはVisual StudioVisual Studio Express、いくつかのバージョンのMicrosoft Windows SDKにあります。 すでにVisual Studio環境が設定されているのでなければ、Microsoftから無料でダウンロードできるVisual Studio 2022のコンパイラやWindows SDK 10のものを使用することが最も簡単な方法です。

32ビットも64ビットもマイクロソフトのコンパイラ一式で構築が可能です。 32ビットPostgreSQLの構築はVisual Studio 2015からVisual Studio 2022までに付属のコンパイラをサポートします。単体のWindows SDKの10以上についても同様です。 64ビットPostgreSQLの構築はMicrosoft Windows SDKのバージョン10以上、もしくはVisual Studio 2015かそれ以上のバージョンでサポートしています。

Visual C++またはPlatform SDKを使用して構築するためのツールがsrc\tools\msvcディレクトリに存在します。 構築する際に、MinGWCygwinに付属するツールがシステムPATHに存在しないことを確認してください。 また、PATH上で必要なVisual C++ツールがすべて利用可能になっていることを確認してください。 Visual Studioでは、Visual Studio コマンドプロンプトを起動してください。 64ビット版を構築したい場合には、それぞれ64ビット版のコマンドを使用する必要がありますし、逆の場合も同様です。 Visual Studio 2017からは、これはコマンドラインからVsDevCmd.batを使ってできます。利用可能なオプションとそのデフォルト値については-helpを参照してください。 Visual Studio 2015とそれ以前のバージョンでは、同じ目的のためにvsvars32.batが利用可能です。 Visual Studioコマンドプロンプトから、vcvarsall.batコマンドを使うことで対象のCPUアーキテクチャ、構築種類、対象OSを変更できます。 例えば、vcvarsall.bat x64 10.0.10240.0は対象をWindows 10の64ビットリリース版として構築します。 その他のvcvarsall.batのオプションについては-helpを参照してください。 すべてのコマンドはsrc\tools\msvcディレクトリから実行しなければなりません。

構築する前に、config.plファイルを作成して、変更する設定オプションや使用する何らかのサードパーティ製のライブラリのパスを反映させることができます。 まずconfig_default.plファイルを読み取り、解析することから始まり、そしてconfig.pl内の何らかの変更が適用されて、すべての設定が決定されます。 例えば、Pythonインストレーションの場所を指定する場合、以下をconfig.plに記載します。

$config->{python} = 'c:\python310';

config_default.pl内の指定と異なるパラメータのみを指定する必要があります。

何か他に環境変数を設定する必要があれば、buildenv.plという名前のファイルを作成し、そこに必要なコマンドを記載してください。 たとえば、PATHにbison用のパスを追加したいのであれば、以下を含むファイルを作成してください。

$ENV{PATH}=$ENV{PATH} . ';c:\some\where\bison\bin';

Visual Studioビルドコマンド(msbuildまたはvcbuild)に追加のコマンドライン引数を渡すには次のようにします。

$ENV{MSBFLAGS}="/m";

18.1.1. 必要条件 #

PostgreSQLを構築するには以下の追加製品が必要です。 config.plファイルを使用してライブラリを利用できるディレクトリを指定してください。

Microsoft Windows SDK

もしあなたの構築環境がサポートされているMicrosoft Windows SDKのバージョンを搭載していないのであれば、入手可能な最新版(現在はバージョン10)までアップグレードすることを推奨します。 https://www.microsoft.com/downloadからダウンロードできます。

SDKのWindows Headers and Librariesを常にインクルードしなければなりません。 Visual C++ Compilersに含まれるWindows SDKをインストールしている場合、構築のためにVisual Studioは必要ありません。 バージョン8.0aでは、Windows SDKは完全なコマンドライン構築環境を提供していないことに注意してください。

ActiveState Perl

ActiveState Perlが構築生成スクリプトを実行するために必要です。 MinGWまたはCygwinのPerlでは動作しません。 また、PATH内に含められていなければなりません。 https://www.activestate.comからバイナリをダウンロードできます (注意:バージョン5.14以降が必要です。フリー版の標準配布で十分です)。

使用できるようになることが目的であれば以下の追加製品は必要ありませんが、完全なパッケージを構築する場合には必要です。 config.plを使用してライブラリが利用できるディレクトリを指定してください。

ActiveState TCL

PL/Tclを構築する時に必要です (注意:バージョン8.4が必要です。フリー版の標準配布で十分です)。

BisonおよびFlex

Gitから構築する場合はBisonおよびFlexが必要です。 しかしリリースファイルから構築する場合は不要です。 Bison バージョン2.3以降のみで動作します。 Flexはバージョン2.5.35以降でなければなりません。

BisonおよびFlexの両方が、MinGWコンパイラ一式の一部としてhttp://www.mingw.org/wiki/MSYSから入手できる、msysツール一式に含まれています。

すでにPATHが通っていない場合は、buildenv.plの中でflex.exeおよびbison.exeがあるディレクトリをPATH環境変数に追加する必要があります。 MinGWの場合、このディレクトリはMinGWのインストールディレクトリの\msys\1.0\binサブディレクトリです。

注記

GnuWin32からのBisonディストリビューションでは、英語のインストールでのデフォルトの場所であるC:\Program Files\GnuWin32のように名前に空白を持つディレクトリにインストールされると正常に機能しないというバグがあります。 代わりにC:\GnuWin32へのインストール、または、PATH環境設定におけるGnuWin32へのNTFSショートネームパスの使用(例えばC:\PROGRA~1\GnuWin32)を検討してください。

Diff

リグレッションテストを実行するにはdiffが必要です。 http://gnuwin32.sourceforge.netからダウンロードできます。

Gettext

NLSサポート付きで構築する場合はgettextが必要です。 http://gnuwin32.sourceforge.netからダウンロードできます。 バイナリ、依存物、開発用ファイルすべてが必要であることに注意してください。

MIT Kerberos

GSSAPI認証をサポートする場合に必要です。 MIT Kerberosはhttps://web.mit.edu/Kerberos/dist/index.htmlからダウンロードできます。

libxml2およびlibxslt

XMLサポートのために必要です。 バイナリはhttps://zlatkovic.com/pub/libxmlから、ソースはhttp://xmlsoft.orgからダウンロードできます。 libxml2はiconvを必要とすることに注意してください。 同じ場所からダウンロードできます。

LZ4

LZ4圧縮方式のサポートのために必要です。 バイナリとソースはhttps://github.com/lz4/lz4/releasesからダウンロードできます。

Zstandard

Zstandard圧縮方式のサポートのために必要です。 バイナリとソースはhttps://github.com/facebook/zstd/releasesからダウンロードできます。

OpenSSL

SSLサポートのために必要です。 バイナリはhttps://slproweb.com/products/Win32OpenSSL.htmlから、ソースはhttps://www.openssl.orgからダウンロードできます。

ossp-uuid

UUID-OSSPサポート(contribのみ)で必要です。 ソースはhttp://www.ossp.org/pkg/lib/uuid/にあります。

Python

PL/Pythonを構築する場合に必要です。 バイナリはhttps://www.python.orgからダウンロードできます。

zlib

pg_dumpおよびpg_restoreにおける圧縮をサポートするために必要です。 バイナリはhttps://www.zlib.netからダウンロードできます。

18.1.2. 64ビット版のWindowsにおける特別な考慮事項 #

64ビット版Windowsにおいてx64アーキテクチャのみでPostgreSQLを構築できます。

同じ構築用ツリーで32ビット版と64ビット版を混在させることはサポートされません。 構築システムは32ビット環境で動作しているか64ビット環境で動作しているかを自動的に検出し、それにしたがってPostgreSQLを構築します。 このため構築作業を始める前に正しいコマンドプロンプトを開始することが重要です。

PythonOpenSSLなどのサーバサイドのサードパーティ製ライブラリを使用するためには、ライブラリも64ビット版である必要があります。 64ビット版のサーバで32ビット版のライブラリをロードすることはサポートされていません。 PostgreSQLがサポートするサードパーティ製のライブラリで32ビット版しか利用できないものが複数あります。 こうした場合、64ビット版のPostgreSQLで使用することはできません。

18.1.3. 構築 #

リリース条件(デフォルト)でPostgreSQLをすべて構築するためには、以下のコマンドを実行してください。

build

デバッグ条件でPostgreSQLをすべて構築するためには、以下のコマンドを実行してください。

build DEBUG

単一のプロジェクトのみを構築するためには、たとえばpsqlであれば、以下のコマンドを実行してください。

build psql
build DEBUG psql

デバッグのためにデフォルトの構築条件を変更するためには、以下をbuildenv.plファイルに記載してください。

$ENV{CONFIG}="Debug";

また、Visual Studio GUI内から構築することも可能です。 この場合はコマンドプロンプトから以下を実行しなければなりません。

perl mkvcbuild.pl

その後に、生成されたpgsql.sln(ソースツリーのトップディレクトリに存在します)をVisual Studioで開いてください。

18.1.4. 整理およびインストール #

ほとんどの場合、Visual Studioの持つ自動依存関係追跡により変更されたファイルが扱われます。 しかし、大規模な変更が行われた場合、インストレーションを整理する必要があるかもしれません。 このためには、clean.batコマンドを実行してください。 これにより、生成されたファイルがすべて自動的に消去されます。 また、distパラメータを使用して実行することも可能です。 この場合、make distcleanのように振舞い、flex/bisonの出力ファイルも削除します。

デフォルトで、すべてのファイルがdebugまたはreleaseディレクトリ以下のサブディレクトリに書き出されます。 これらのファイルを標準レイアウトでインストールし、データベースの初期化や使用に必要なファイルを生成するためには、以下のコマンドを実行してください。

install c:\destination\directory

クライアントアプリケーションとインタフェースライブラリだけをインストールしたいのであれば、以下のコマンドが使えます。

install c:\destination\directory client

18.1.5. リグレッションテストの実行 #

リグレッションテストを実行するためには、まず必要なすべての部品の構築が完了していることを確認してください。 また、システムのすべての部品で必要とするDLL(手続き言語用のPerlのDLLやPythonのDLLなど)がシステムパスに含まれていることを確認してください。 もし含まれていなければ、buildenv.plファイルを介して設定してください。 試験を実行するためには、以下のコマンドのいずれかをsrc\tools\msvcディレクトリから実行してください。

vcregress check
vcregress installcheck
vcregress plcheck
vcregress contribcheck
vcregress modulescheck
vcregress ecpgcheck
vcregress isolationcheck
vcregress bincheck
vcregress recoverycheck
vcregress taptest

使用するスケジュール(デフォルトはparallelです)を変更するためには、コマンドラインに以下のように追加してください。

vcregress check serial

vcregress taptestは、次のように、対象ディレクトリのTAPテストを実行するために使用できます。

vcregress taptest src\bin\initdb\

リグレッションテストの詳細については第33章を参照してください。

クライアントプログラムでvcregress bincheckによりリグレッションテストを実行したり、vcregress recoverycheckによりリカバリテストを実行したり、vcregress taptestで指定したTAPテストを実行したりするには、追加のPerlモジュールをインストールしておかなければなりません。

IPC::Run

これを書いている時点では、IPC::RunはActiveState PerlインストレーションにもActiveState Perl Package Manager(PPM)ライブラリにも含まれていません。 インストールするためには、https://metacpan.org/dist/IPC-RunCPANからIPC-Run-<version>.tar.gzソースアーカイブをダウンロードして、展開してください。 buildenv.plを編集して、取り出されたアーカイブからlibサブディレクトリを指すように変数PERL5LIBを追加してください。 例えば以下のとおりです。

$ENV{PERL5LIB}=$ENV{PERL5LIB} . ';c:\IPC-Run-0.94\lib';

vcregressでのTAPテストの実行では、環境変数PROVE_TESTSPROVE_FLAGSをサポートします。PROVE_TESTSは与えられた名前のパターンを使って自動的に展開されます。 これは、vcregressを実行する前に、Windowsターミナルで設定できます。

set PROVE_FLAGS=--timer --jobs 2
set PROVE_TESTS=t/020*.pl t/010*.pl

buildenv.plで、このパラメータを設定することもできます。

$ENV{PROVE_FLAGS}='--timer --jobs 2'
$ENV{PROVE_TESTS}='t/020*.pl t/010*.pl'

さらに、TAPテストの動作は一連の環境変数で制御できます。33.4.1を参照してください。

TAPテストの中には、オプションで関連するテストを起動する外部コマンドに依存しているものがあります。 これらの変数のそれぞれは、buildenv.plで設定または解除できます。

GZIP_PROGRAM

gzipコマンドへのパス。 デフォルトはgzipで、設定されたPATH内からその名前でコマンドを検索します。

LZ4

lz4コマンドへのパス。 デフォルトはlz4で、設定されたPATH内からその名前でコマンドを検索します。

OPENSSL

opensslコマンドへのパス。 デフォルトはopensslで、設定されたPATH内からその名前でコマンドを検索します。

TAR

tarコマンドへのパス。 デフォルトはtarで、設定されたPATH内からその名前でコマンドを検索します。

ZSTD

zstdコマンドへのパス。 デフォルトはzstdで、設定されたPATH内からその名前でコマンドを検索します。