Building from source#
!!!警告このオプションは開発者および上級ユーザーを対象としています。 EDBによって構築およびテストされたソフトウェアのみがEDBによってサポートされています。
Self-Managed Supported Open Source Software を参照してください。
特定のコンポーネントのパッケージインストールを他のコンポーネントのソースビルドと組み合わせることもできます。たとえば、パッケージからPostgresをインストールし、ソースからpglogicalとPGDをコンパイルできます。ただし、パッケージの依存関係により、ソースからpglogicalをインストールし、パッケージからPGDをインストールできません。
ソースビルドは、開発、テスト、およびサポート操作で使用することを目的としています。
クイックスタート#
2ndQPostgres、pglogical3、およびbdrはすべて安定したブランチからビルドされたものを使用してクラスターをセットアップします。
$ tpaexec configure ~/clusters/speedy -a BDR-Always-ON \
--layout bronze \
--harp-consensus-protocol etcd \
--install-from-source \
2ndqpostgres:2QREL_13_STABLE_dev \
pglogical3:REL3_7_STABLE \
bdr3:REL3_7_STABLE
Sockerクラスターでは、リモートgitリポジトリの代わりにローカルワークツリーからコンポーネントをビルドすることもできます。
$ tpaexec configure ~/clusters/speedy \
--architecture BDR-Always-ON --layout bronze \
--harp-consensus-protocol etcd \
--platform docker \
--install-from-source 2ndqpostgres:2QREL_13_STABLE_dev \
pglogical3 bdr3 \
--local-source-directories \
pglogical3:~/src/pglogical bdr3:~/src/bdr
クラスターを展開した後、後続の実行でtpaexec deploy … --skip-tags build-clean
を使用して、ビルドディレクトリを再利用できます。それ以外の場合、ビルドディレクトリはビルドを開始する前に空にされます。
BDR、およびカスタムの場所とビルドパラメーターを使用するその他のコンポーネント。
構成#
ソースビルドの構成には2つの側面があります。
クラスターで特定のソースの組み合わせを実行する場合は、
tpaexec configure
を実行して、選択したコンポーネントをダウンロード、コンパイル、およびインストールするための合理的なデフォルトで構成を生成します。
クイックスタート の例にあるように、 PostgresまたはPostgres
Extended、pglogical、およびBDRをビルドし、ビルドの元のブランチ名を指定できます。
基になるメカニズムは、コマンドラインオプションで許可される以上の機能を備えています。
config.yml
を編集することにより、さまざまなソースリポジトリのクローンを作成したり、ビルドの場所を変更したり、別のconfigureまたはbuildパラメーターを指定したり、buildコマンドを完全に再定義したりできます。したがって、
Postgres、pglogical、およびBDR以外のものをビルドできます。
使用可能なオプションについては、以下を参照してください。
Building extensions with `install_from_source <Installing from source>`
ローカルソースディレクトリ#
TPAを使用して、GitリポジトリからではなくローカルソースディレクトリからPostgresと拡張機能をビルドするDockerコンテナをプロビジョニングできます。
--install-from-source
を使用して、ビルドするものを宣言しているとします。
$ tpaexec configure ~/clusters/speedy \
--architecture BDR-Always-ON --layout bronze \
--harp-consensus-protocol etcd \
--platform docker \
--install-from-source 2ndqpostgres:2QREL_13_STABLE_dev \
pglogical3:REL3_7_STABLE bdr3:REL3_7_STABLE \
…
デフォルトでは、このコマンドは、 tpaexec deploy を使用してPostgres
Extended、pglogical3、およびbdr3の既知のリポジトリをクローンし、指定されたブランチをチェックアウトして、ビルドするクラスター構成になります。ただし、
--local-source-directories
を追加して、代わりにホストマシンからソースを直接取得するように指定できます。
$ tpaexec configure ~/clusters/speedy \
--architecture BDR-Always-ON --layout bronze \
--harp-consensus-protocol etcd \
--platform docker \
--install-from-source 2ndqpostgres:2QREL_13_STABLE_dev \
pglogical3 bdr3 \
--local-source-directories \
pglogical3:~/src/pglogical bdr3:~/src/bdr \
…
この構成では、リポジトリからPostgres Extendedをインストールしますが、ホスト上の指定されたディレクトリからpglogical3およびbdr3ソースを取得します。これらのディレクトリは、gitリポジトリがクローン作成されるのと同じ場所にあるDockerコンテナに読み取り専用でバインドマウントされ、デフォルトのツリー外ビルドが通常のように続行されます。
コンポーネントのローカルソースディレクトリを指定する場合、ビルドするブランチを指定することはできません。前述の例の--install-from-source
のpglogical3:REL3_7_STABLE とplogical3
を参照してください。ソースディレクトリはコンテナに読み取り専用でマウントされているため、TPAはgit pull
またはgit checkout
を使用して更新できません。ローカルにチェックアウトされたブランチを取得します。コミットされていない変更を含みます。
--local-source-directories を使用すると、config.yml
にDockerボリューム定義のリストが含まれます。
local_source_directories:
- /home/ams/src/pglogical:/opt/postgres/src/pglogical:ro
- /home/ams/src/bdr:/opt/postgres/src/bdr:ro
- ccache-bdr_src_36-20200828200021:/root/.ccache:rw
ccache#
TPAは、すべての種類のソースビルドにデフォルトでccacheをインストールします。ローカルソースディレクトリでDockerクラスターを使用している場合、デフォルトでは、新しいDockerボリュームがクラスターのコンテナに接続され、共有ccacheディレクトリとして機能します。このボリュームはホストから完全に分離され、クラスターがプロビジョニング解除されるときに削除されます。
--shared-ccache /path/to/host/ccache
configureオプションを使用して、有効期間の長い共有ccacheディレクトリを指定します。このディレクトリは、コンテナに読み取り/書き込みでバインドマウントされ、そのコンテンツはホストとコンテナの間で共有されます。
デザインとして、ホストでコンパイルされたバイナリをコンテナに直接インストールする方法はありません。
リビルド#
ソースからビルドされたコンポーネントを使用してクラスターを展開した後、
tpaexec rebuild-sources
を実行して、これらのコンポーネントのみをすばやくリビルドおよび再展開します。このコマンドは、
tpaexec deploy
を実行するよりも高速ですが、構成変更は適用されません。