PostgreSQL16をソースコードからビルドしてみたのですが、いくつかつまづいたポイントがあるので、それらにご紹介します。
PostgreSQL16をソースコードからビルドするためのコマンドは以下のとおりです。前提として M1 Mac (macOS 14.4.1) を使っています。
% git clone git://git.postgresql.org/git/postgresql.git
% cd postgresql
% ./configure --enable-debug --enable-cassert --enable-tap-tests --prefix=$HOME/pgsql CFLAGS=-O0
% make -j 4
% make install
configureコマンドには以下のオプションを指定しています。
- デバッグしやすくするためのオプション: –enable-debug –enable-cassert –enable-tap-tests
- インストール先のディレクトリを指定するオプション: –prefix
参考: https://www.postgresql.jp/document/16/html/install-make.html#CONFIGURE-OPTIONS
icu-uc
, icu-i18n
のパッケージが見つからない
icu-uc
, icu-i18n
のパッケージが見つからないと言われました。
% ./configure --enable-debug --enable-cassert --enable-tap-tests --prefix=$HOME/pgsql CFLAGS=-O0
(省略)
checking for icu-uc icu-i18n... no
configure: error: Package requirements (icu-uc icu-i18n) were not met:
No package 'icu-uc' found
No package 'icu-i18n' found
Consider adjusting the PKG_CONFIG_PATH environment variable if you
installed software in a non-standard prefix.
Alternatively, you may set the environment variables ICU_CFLAGS
and ICU_LIBS to avoid the need to call pkg-config.
See the pkg-config man page for more details.
PKG_CONFIG_PATHという環境変数を設定してあげれば良いみたいです。 以下のコマンドを実行すると、どう設定すればいいか教えてくれました。
% brew info icu4c
(省略)
For pkg-config to find icu4c you may need to set:
export PKG_CONFIG_PATH="/opt/homebrew/opt/icu4c/lib/pkgconfig"
言われた通りに設定しました。
echo 'export PKG_CONFIG_PATH="/opt/homebrew/opt/icu4c/lib/pkgconfig"' >> ~/.zshrc
source ~/.zshrc
TAPテストに必要なモジュールがインストールされていない
TAPテストに必要なPerlのmoduleがインストールされていなかったみたいです。
checking for Perl modules required for TAP tests... Can't locate IPC/Run.pm in @INC (you may need to install the IPC::Run module) (@INC contains: /Library/Perl/5.34/darwin-thread-multi-2level /Library/Perl/5.34 /Network/Library/Perl/5.34/darwin-thread-multi-2level /Network/Library/Perl/5.34 /Library/Perl/Updates/5.34.1 /System/Library/Perl/5.34/darwin-thread-multi-2level /System/Library/Perl/5.34 /System/Library/Perl/Extras/5.34/darwin-thread-multi-2level /System/Library/Perl/Extras/5.34) at ./config/check_modules.pl line 14.
BEGIN failed--compilation aborted at ./config/check_modules.pl line 14.
configure: error: Additional Perl modules are required to run TAP tests
TAPテストに必要なPerlのmoduleをインストールしました。
参考: https://www.postgresql.jp/document/16/html/regress-tap.html
sudo cpan IPC::Run