Help us understand the problem. What is going on with this article?

PostgreSQL configureオプション(8.3~12)

はじめに

なんとなくPostgreSQLのconfigureオプションの変遷について調べてみた。
PostgreSQL 12情報も追加した(2019-12-29)

調査のきっかけ

先日、とある案件でPostgreSQL 8.3からAurora PostgreSQL 10への移行したい、みたいな話を聞いて、互換性に関する下調べをしてた。

で、リリースノートを見ると、configureオプションの変更についても記載されているバージョンがあったので、この際、configureのオプションの歴史を調べてみようかなと。
(configureを使ってソースビルドからインストールするユーザはそんなにいないような気もするけど)

だいたい、普段もprefixとか、beta版フェーズで--enable-debugを使うくらいだしなあ。

バージョン毎の変更点

configureオプションの変更なんて、そんなにないだろうと思っていたけど、調べてみると結構あるなという印象。

PostgreSQL 8.4

8.4では非常に多くのconfigureオプションの変更があった。こんなに変更があったとは。

  • 追加:datarootdir
  • 追加:docdir
  • 削除:with-docdir
  • 削除:with-docdir
  • 追加:htmldir
  • 追加:with-python
  • 追加:with-libedit-preferred
  • 追加:with-bonjour
  • 追加:with-ossp-uuid
  • 追加:disable-integer-datetimes
  • 削除:enable-integer-datetimes
  • 追加:disable-float4-byval
  • 追加:disable-float8-byval
  • 追加:with-segsize
  • 追加:with-blocksize
  • 追加:with-wal-segsize
  • 追加:with-wal-blocksize*
  • 追加:enable-coverage

PostgreSQL 9.0

スレッドセーフ指定がデフォルト有効に。

  • 追加:disable-thread-safety
  • 削除:enable-thread-safety

PostgreSQL 9.1

configureのオプションページには記載されていないけど、contrib/sepgsql(9.1~)のページに、with-selinuxオプションに関する記述があるので注意。

  • 追加:with-selinux

PostgreSQL 9.2, 9.3

変更なし。

PostgreSQL 9.4

with-extra-versionって、今まで使ったことなかったけど、パッチを当てたコードをビルドするような時に付与しておくと良さそう。(性能検証のときなど)

  • 追加:with-extra-version
  • 追加:with-uuid
  • 追加:enable-tap-tests

PostgreSQL 9.5

with-krb-srvnamの指定の有無で代用するようにしたのかな?(使ったことないので分からない)

  • 削除:with-krb5

PostgreSQL 9.6

  • 追加:with-bsd-auth
  • 追加:with-systemd

PostgreSQL 10

disable-integer-datetimesがついに削除された!

  • 追加:with-icu
  • 削除:disable-integer-datetimes
  • 追加:disable-strong-random

PostgreSQL 11

JIT対応に関連するwith-llvmの追加と、initdbパラメータとして指定可能になった、with-wal-segsizeが削除された。

  • 追加:with-llvm
  • 削除:with-wal-segsize

PostgreSQL 12

--disable-strong-randomオプションが削除された。このオプションも短命でしたね・・・。

configureオプションの変遷

オプション名 8.3 8.4 9.0 9.1 9.2 9.3 9.4 9.5 9.6 10 11 12
prefix
exec-prefix
bindir
datadir
sysconfdir
libdir
includedir
datarootdir
mandir
localedir
docdir
with-docdir
htmldir
without-docdir
with-extra-version
with-includes
with-libraries
enable-nls
with-pgport
with-perl
with-python
with-tcl
with-tclconfig
with-gssapi
with-krb5
with-krb-srvname
with-llvm
with-icu
with-openssl
with-pam
with-bsd-auth
with-ldap
with-systemd
without-readline
with-libedit-preferred
with-bonjour
with-uuid
with-ossp-uuid
with-libxml
with-libxslt
disable-integer-datetimes
enable-integer-datetimes
disable-float4-byval
disable-float8-byval
with-segsize
with-blocksize
with-wal-segsize
with-wal-blocksize
disable-spinlock
disable-strong-random
disable-thread-safety
enable-thread-safety
with-system-tzdata
without-zlib
enable-debug
enable-coverage
enable-profiling
enable-cassert
enable-depend
enable-dtrace
enable-tap-tests
with-selinux

その他

  • 何気にバージョンによって、PostgreSQL文書での記述順序が違っていたりするのがちょっと面倒だった。
  • 今更、アルファベット順に変更するのは無理なんだろうなあ。
  • contrib/sepgsql のように拡張機能依存のconfigureオプションが他にもあるかもしれない。気づいたら随時追加する。

おわりに

  • configureオプションの変遷、調べてみると意外に面白かった。
  • with-extra-versionのように、使いこなすと検証作業に使えそうなオプションの存在も知ることができたので、たまにはこういう調査もやって良かったなと。
nuko_yokohama
ぬこ@横浜です/ にゃーん / 趣味でポスグレをやってる者だ/ 名もなく 貧しく 太ましく
https://supleks.jp/u/8999.html
Why not register and get more from Qiita?
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away