Microsoftが提供するVisual C++コンパイラスイートを使用してPostgreSQLを構築することができます。 これらのコンパイラはVisual Studio、Visual 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
ディレクトリに存在します。
構築する際に、MinGWやCygwinに付属するツールがシステム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";
PostgreSQLを構築するには以下の追加製品が必要です。
config.pl
ファイルを使用してライブラリを利用できるディレクトリを指定してください。
もしあなたの構築環境がサポートされている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が構築生成スクリプトを実行するために必要です。 MinGWまたはCygwinのPerlでは動作しません。 また、PATH内に含められていなければなりません。 https://www.activestate.comからバイナリをダウンロードできます (注意:バージョン5.14以降が必要です。フリー版の標準配布で十分です)。
使用できるようになることが目的であれば以下の追加製品は必要ありませんが、完全なパッケージを構築する場合には必要です。
config.pl
を使用してライブラリが利用できるディレクトリを指定してください。
PL/Tclを構築する時に必要です (注意:バージョン8.4が必要です。フリー版の標準配布で十分です)。
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が必要です。 http://gnuwin32.sourceforge.netからダウンロードできます。
NLSサポート付きで構築する場合はgettextが必要です。 http://gnuwin32.sourceforge.netからダウンロードできます。 バイナリ、依存物、開発用ファイルすべてが必要であることに注意してください。
GSSAPI認証をサポートする場合に必要です。 MIT Kerberosはhttps://web.mit.edu/Kerberos/dist/index.htmlからダウンロードできます。
XMLサポートのために必要です。 バイナリはhttps://zlatkovic.com/pub/libxmlから、ソースはhttp://xmlsoft.orgからダウンロードできます。 libxml2はiconvを必要とすることに注意してください。 同じ場所からダウンロードできます。
LZ4圧縮方式のサポートのために必要です。 バイナリとソースはhttps://github.com/lz4/lz4/releasesからダウンロードできます。
Zstandard圧縮方式のサポートのために必要です。 バイナリとソースはhttps://github.com/facebook/zstd/releasesからダウンロードできます。
SSLサポートのために必要です。 バイナリはhttps://slproweb.com/products/Win32OpenSSL.htmlから、ソースはhttps://www.openssl.orgからダウンロードできます。
UUID-OSSPサポート(contribのみ)で必要です。 ソースはhttp://www.ossp.org/pkg/lib/uuid/にあります。
PL/Pythonを構築する場合に必要です。 バイナリはhttps://www.python.orgからダウンロードできます。
pg_dumpおよびpg_restoreにおける圧縮をサポートするために必要です。 バイナリはhttps://www.zlib.netからダウンロードできます。
64ビット版Windowsにおいてx64アーキテクチャのみでPostgreSQLを構築できます。
同じ構築用ツリーで32ビット版と64ビット版を混在させることはサポートされません。 構築システムは32ビット環境で動作しているか64ビット環境で動作しているかを自動的に検出し、それにしたがってPostgreSQLを構築します。 このため構築作業を始める前に正しいコマンドプロンプトを開始することが重要です。
PythonやOpenSSLなどのサーバサイドのサードパーティ製ライブラリを使用するためには、ライブラリも64ビット版である必要があります。 64ビット版のサーバで32ビット版のライブラリをロードすることはサポートされていません。 PostgreSQLがサポートするサードパーティ製のライブラリで32ビット版しか利用できないものが複数あります。 こうした場合、64ビット版のPostgreSQLで使用することはできません。
リリース条件(デフォルト)で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で開いてください。
ほとんどの場合、Visual Studioの持つ自動依存関係追跡により変更されたファイルが扱われます。
しかし、大規模な変更が行われた場合、インストレーションを整理する必要があるかもしれません。
このためには、clean.bat
コマンドを実行してください。
これにより、生成されたファイルがすべて自動的に消去されます。
また、dist
パラメータを使用して実行することも可能です。
この場合、make distclean
のように振舞い、flex/bisonの出力ファイルも削除します。
デフォルトで、すべてのファイルがdebug
またはrelease
ディレクトリ以下のサブディレクトリに書き出されます。
これらのファイルを標準レイアウトでインストールし、データベースの初期化や使用に必要なファイルを生成するためには、以下のコマンドを実行してください。
install c:\destination\directory
クライアントアプリケーションとインタフェースライブラリだけをインストールしたいのであれば、以下のコマンドが使えます。
install c:\destination\directory client
リグレッションテストを実行するためには、まず必要なすべての部品の構築が完了していることを確認してください。
また、システムのすべての部品で必要とする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
はActiveState PerlインストレーションにもActiveState Perl Package Manager(PPM)ライブラリにも含まれていません。
インストールするためには、https://metacpan.org/dist/IPC-RunでCPANからIPC-Run-<version>.tar.gz
ソースアーカイブをダウンロードして、展開してください。
buildenv.pl
を編集して、取り出されたアーカイブからlib
サブディレクトリを指すように変数PERL5LIBを追加してください。
例えば以下のとおりです。
$ENV{PERL5LIB}=$ENV{PERL5LIB} . ';c:\IPC-Run-0.94\lib';
vcregress
でのTAPテストの実行では、環境変数PROVE_TESTS
とPROVE_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
内からその名前でコマンドを検索します。