本章では、PostGIS のインストールに必要な手順について説明します。
全ての依存がパスに入っているとする場合、次のようにコンパイルします。
tar -xvzf postgis-3.7.0dev.tar.gz cd postgis-3.7.0dev ./configure make make install
PostGIS をインストールした後は、利用したいデータベース個々内で利用可能にする (「空間データベースの作成」) か、アップグレード (「空間データベースのアップグレード」) する必要があります。
|
|
|
多くの OS で、ビルドされた PostgreSQL/PostGIS パッケージがあります。多くの場合、コンパイルが必要なのは、最もひどい最先端の版が欲しい場合やパッケージメンテナンスを行う人ぐらいです。 この節では一般的なコンパイル手順を紹介します。Windows または他のオペレーティングシステム用に困憊する場合には、PostGIS getting started guides と development environment guides とをご覧ください。 各種 OS 用の事前ビルドパッケージの一覧は PostGIS getting started guides にあります。 Windows ユーザの場合は、スタックビルダか、PostGIS Windows download siteから安定版を得ることができます。また、週に 1回か 2回のビルドと刺激的なことがあった時の随時ビルドとを行っているvery bleeding-edge windows experimental buildsもあります。これらは PostGIS の進行中のリリースでの試験に使用します。 |
PostGIS モジュールは、PostgreSQL バックエンドサーバの拡張です。PostGIS 3.7.0devでは、コンパイルのために、完全な PostgreSQL サーバヘッダが必要です。PostgreSQL 14 - 19beta2の間でビルドできます。古い版の PostgreSQL はサポートされません。
PostgreSQL をインストールしていないなら PostgreSQL インストールガイドを参照して下さい。http://www.postgresql.org/にあります。
|
|
|
GEOS 機能を有効にするために、PostgreSQL をインストール時に明示的に標準 C++ライブラリに対する明示的なリンクが必要になる場合があります。 |
LDFLAGS=-lstdc++ ./configure [YOUR OPTIONS HERE]
これは、古い開発ツールとインチキ C++例外との対話のための応急処置です。怪しい問題 (望んでいないのにバックエンドが閉じたりそれに近い挙動を起こす) を経験したなら、このトリックを試してみて下さい。もちろん、これを行うには PostgreSQL をはじめからコンパイルし直す必要があります。
次のステップでは、PostGIS ソースのコンフィギュレーションとコンパイルに概要を記述します。これらは、Linux ユーザ用に書いてありますので、Windows や Mac では動作しません。
ダウンロードサイト https://postgis.net/stuff/postgis-3.7.0dev.tar.gz からソースのアーカイブを入手します。
wget https://postgis.net/stuff/postgis-3.7.0dev.tar.gz tar -xvzf postgis-3.7.0dev.tar.gz cd postgis-3.7.0dev
これで、カレントディレクトリの下にpostgis-3.7.0devができます。
もしくは git レポジトリ https://git.osgeo.org/gitea/postgis/postgis/ からチェックアウトします。
git clone https://git.osgeo.org/gitea/postgis/postgis.git postgis
cd postgis
sh autogen.sh
新しく作られたpostgisディレクトトリに移動して、インストールを続けます。
./configure
PostGIS のビルドと利用のために、次のものが必要です。
必須
PostgreSQL 14 - 19beta2、18。PostgreSQL の完全なインストール (サーバプログラムのヘッダファイルを含む) が必要です。PostgreSQL は https://www.postgresql.org にあります。
現在のリリースラインサポートとサポート集終了については https://postgis.net/development/versions_eol/ をご覧下さい。
GNU C コンパイラ (gcc)。ANSI C コンパイラの中には、PostGISをコンパイルできるものもありますが、gccでコンパイルするのが最も問題が少ないと見ています。
GNU Make (gmakeまたはmake)。多くのシステムで、GNU makeがデフォルトの make になっています。make -vを実行して版を確認して下さい。他版のmakeでは、PostGIS のMakefileを完全に処理しきれないかもしれません。
投影変換ライブラリ Proj。Proj 6.1以上が必要です。Proj ライブラリは、PostGIS の座標系投影変換機能に使われます。Proj は https://proj.org/ からダウンロードできます。
GEOS geometry library, version 3.10.0 or greater, but GEOS 3.15+ is required to take full advantage of all the new functions and features. GEOS is available for download from https://libgeos.org .
LibXML2. LibXML2 is currently used in some imports functions (ST_GeomFromGML and ST_GeomFromKML). LibXML2 is available for download from https://gitlab.gnome.org/GNOME/libxml2/-/releases.
Perl is required to build PostGIS. Perl is available for download from https://www.perl.org/.
The iconv library is required by the shp2pgsql loader for encoding conversion. On GNU/Linux systems it is typically provided by libc; on other platforms you may need a separate libiconv package.
The GNU Multiple Precision Arithmetic Library (libgmp). Used to control precision of math operations in PostGIS Topology. GMP is available for download from https://gmplib.org/. It is detected via pkg-config and has no fallback, so pkg-config must be available for a default build.
GDAL, version 2.4 or higher, is required for raster support. GDAL 3+ is preferred. https://gdal.org/download.html.
PostgreSQL+JIT でコンパイルする場合には、LLVM 6版以上が必要です。https://trac.osgeo.org/postgis/ticket/4125を参照して下さい。
オプション
GDAL (擬似的任意)。ラスターが必要ない場合に限り不要です。「ラスター機能の設定」の説明に従って使用したいドライバーを有効にしてください。
JSON-C. JSON-C is currently used to import GeoJSON via the function ST_GeomFromGeoJson. JSON-C is available for download from https://github.com/json-c/json-c/releases/. It is enabled by default but optional; if it is not found configure only warns and the build continues. Disable with --without-json.
GNU gettext for loader and documentation translation support. It may be disabled with --with-gettext=no. https://www.gnu.org/software/gettext/.
GTK (GTK+2.0, 2.8+が必要)。シェープファイルのローダである shp2pgsql-gui のコンパイル用です。http://www.gtk.org/にあります。
SFCGAL, 1.3.1 or higher is required, 2.3+ is needed to be able to use all functionality. SFCGAL can be used to provide additional 2D and 3D advanced analysis functions to PostGIS cf 8章SFCGAL 関数リファレンス. https://sfcgal.gitlab.io/sfcgal/.
ST_AsMVT を有効にするには、protobuf-c ライブラリ (実行時) と protoc-c コンパイラ (ビルド時) が必要です。protobuf-c の正しい最小版を確認するには、pkg-config が必要です。protobuf-cをご覧下さい。デフォルトでは、PostGIS は、MVT ポリゴンを高速に評価するために Wagyu を使用していますが、C++11コンパイラが必要です。CXXFLAGS を使って、PostgreSQL インストールに使ったのと同じコンパイラを使います。これを無効化して GEOS を代わりに使う場合には、コンフィギュレーション時に--without-wagyuを指定します。
CUnit (CUnit)。レグレッションテストに必要です。http://cunit.sourceforge.net/にあります。
DocBook (xsltproc)。文書のビルドに必要です。http://www.docbook.org/にあります。
Python 3 is required to run the manual example tester that generates the visual examples which the HTML and PDF documentation embed. The examples are executed against a live PostgreSQL server running the staged PostGIS build via make -C regress visual-examples; no Python database driver is required, the tooling talks to the server through the psql client. Python 3 is available from https://www.python.org/ .
DBLatex (dblatex)。文書を PDF でビルドするのに必要です。http://dblatex.sourcforge.net/にあります。
PDF 文書化は、高解像度図形の後退のために SVG ラスター化ツールが必要です。ビルドでは rsvg-convert が好ましく、また GraphicsMagick (gm convert) か ImageMagick (magick または convert) を使用することができます。
ほとんどの Linux のインストールと同様に、最初のステップでは、ソースコードのビルドに使われる Makefile を生成します。これは、シェルスクリプトが行います。
./configure
パラメータを付けない場合には、このコマンドは自動で、PostGIS のソースコードのビルドを行うのに必要なコンポーネントやライブラリをシステム上で探します。./configureとするのが一般的な使い方ですが、標準的でない位置に必要なライブラリやプログラムを置いてある場合のために、いくつかのパラメータを受け付けます。
次のリストで、共通して使われるパラメータを示します。 完全なリストについては、--helpまたは--help=shortパラメータを使って下さい。
--with-library-minor-version
PostGIS 3.0以降では、デフォルトではライブラリファイルのファイル名にマイナーバージョンが入らなくなりました。PostGIS 3のライブラリは postgis-3 で終わります。pg_upgrade を簡単にするために実施された変更ですが、サーバに PostGIS 3シリーズは一つのマイナーバージョンのものだけしかインストールできません。postgis-3.0 といったようにマイナーバージョンをファイル名に含む古い振舞いにしたいなら、コンフィギュレーション実行の際に次のスイッチを追加します。
--prefix=PREFIX
PostGIS コマンドラインユーティリティのインストール先です。デフォルトではユーティリティは検出された PostgreSQL から報告される実行可能ディレクトリーにインストールされます。
|
|
|
PostgreSQL エクステンションファイルは pg_config から報告されるディレクトリーにインストールして、サーバーはロード可能になります。これには PostGIS 共有ライブラリーと SQL エクステンションファイルが入っています。PostGIS のビルドとインストールを行っている PostgreSQL インストールを選択するには |
--with-pgconfig=FILE
PostgreSQL は、PostGIS などの拡張に対して PostgreSQL のインストール先ディレクトリを伝えるpg_configというユーティリティを持っています。PostGIS の対象とする特定の PostgreSQL のインストール先を手動で指定する場合に、このパラメータ(--with-pgconfig=/path/to/pg_config) を使います。
--with-gdalconfig=FILE
必須ライブラリである GDAL は、ラスター機能に必要な機能を提供します。GDAL には、インストール先ディレクトリをインストールスクリプトに伝えるgdal-configがあります。PostGIS のビルドに使う特定の GDAL を手動で指定する場合に、このパラメータ (--with-gdalconfig=/path/to/gdal-config) を使います。
--with-geosconfig=FILE
必須のジオメトリーライブラリである GEOS には、ソフトウェアのインストール時に GEOSのインストール先ディレクトリを伝えるgeos-configというユーティリティがあります。PostGIS のビルドに使う特定の GEOS を手動で指定する場合に、このパラメータ (--with-geosconfig=/path/to/geos-config) を使います。
--with-xml2config=FILE
LibXML は GeomFromKML/GML 処理を行うのに必須のライブラリです。通常は libxml をインストールしているなら発見されますが、発見できない場合や特定の版を使用したい場合は、xml2-configを指定してインストールスクリプトにLibXML のインストール先ディレクトリを伝えます。PostGIS のビルドに使う特定のLibXML を手動で指定する場合に、このパラメータ (>--with-xml2config=/path/to/xml2-config) を使います。
--with-projdir=DIR
Proj は PostGIS に必須の投影変換ライブラリです。PostGIS のビルドに使う特定の Projのインストールディレクトリを手動で指定する場合は、このパラメータ (--with-projdir=/path/to/projdir) を使います。
--with-libiconv=DIR
iconv のインストール先ディレクトリを指定します。
--with-jsondir=DIR
JSON-Cは、MITライセンスの JSON ライブラリで、PostGIS の ST_GeomFromJSON に必須です。PostGIS のビルドに使う特定の JSON-C を手動で指定する場合に、このパラメータ (--with-jsondir=/path/to/jsondir) を使います。
--with-gui
データインポート GUI (GTK+2.0が必要) をコンパイルします。このパラメータによって、shp2pgsql-gui という、shp2pgsql のグラフィカルユーザインタフェースが作成されます。
--without-raster
ラスター機能なしでコンパイルします。
--without-topology
トポロジー機能なしでコンパイルします。
--with-gettext=no
デフォルトでは、gettext の検出とこれを用いたコンパイルを試みますが、ローダ破損を引き起こす非互換性問題のもとで実行する場合には、このコマンドで無効にできます。これを使ったコンフィギュレーションによって解決する問題の例はhttp://trac.osgeo.org/postgis/ticket/748にあります。ご注意: これを切ることで多くの機能がなくなるわけではありません。まだ文書化されていなくて試験段階である GUI ローダにおける内部のヘルプ/ラベル機能に使われています。
--with-sfcgal=PATH
デフォルトでは、このスイッチなしでは SFCGAL 対応でインストールされません。PATHは、sfcgal-config へのパスを指定することができる追加的な引数です。
--without-phony-revision
Git レポジトリの現在の HEAD に一致するように、postgis_revision.h の更新を無効にします。
|
|
|
PostGIS を code repository から得た場合には、最初の手続は本当に次のスクリプトの実行です |
./autogen.sh
このスクリプトによってconfigureスクリプトが生成されます。これは PostGIS のインストールに関するカスタマイズに使われます。
PostGIS をアーカイブファイルで入手する場合には、configureが既に生成されているので./autogen.shは不要です。
Makefile が生成されたら、PostGIS のビルドは、次のコマンドを実行するだけです。
make
[last line of output] PostGIS was built successfully. Ready to install.
全ての関数は文書から生成されたコメントを持っています。後でコメントを手持ちの空間データベースにインストールしたい場合には、docbook が必要なコマンドを実行します。postgis_comments.sql と他のパッケージのコメントファイルは tar.gz ディストリビューションの doc フォルダ内に同梱されています。この tar ボールからインストールする場合にはコメントを生成する必要がありません。コメントは CREATE EXTENSIONインストールにも含まれています。
make comments
make cheatsheetsターゲットで、HTML のチートシートが生成されます。クイックリファレンスまたは学習用資料に適しています。これを作るにはxsltproc が必要です。doc フォルダーに topology_cheatsheet.html、raster_cheatsheet.html、 postgis_cheatsheet.htmlの 4ファイルが生成されます。
HTML と PDF のビルド済みのものはPostGIS / PostgreSQL Study Guidesにあります。
make cheatsheets
PostGIS エクステンションは PostgreSQL エクステンション機能が有効なら自動でビルド、インストールされます。
ソースレポジトリからビルドしている場合は、関数の記述を最初にビルドする必要があります。これらは、docbook がインストールされている時にビルドされます。手動でインストールするには次のようにします。
make comments
アーカイブファイルからのビルドの場合は、ビルド済みのものがあるので、コメントのビルドは必須ではありません。
PostgreSQL 9.1を対象にビルドしている場合は、エクステンションは自動的に make install 処理の一部としてビルドするべきです。必要なら extensions フォルダからビルドできますし、他のサーバで必要ならファイルの複製ができます。
psql 接続ユーザーを上書きしたいときには PGUSER を設定します。インストール後にエクステンションの回帰テストを行います。
cd extensions cd postgis make clean make export PGUSER=postgres make check make install make check RUNTESTFLAGS=--extension
|
|
|
|
エクステンションファイルは、常に、OS に関係なく同じ版の PostGIS では同じです。PostGIS バイナリを既にインストールしている限りは、エクステンションファイルをある OS から別のものに複写して大丈夫です。
開発用と異なる別のサーバでエクステンションを手動でインストールしたい場合は、サーバにない時に必要となる通常の PostGIS のバイナリだけでなく、次のファイルをextensions フォルダから PostgreSQL インストール先のPostgreSQL / share / extensionフォルダに複写します。
指定されていない場合のインストールするエクステンションの版等の情報を示す制御ファイpostgis.control, postgis_topology.control。
エクステンションごとの/sql フォルダにあるファイル全て。extensions/postgis/sql/*.sql, extensions/postgis_topology/sql/*.sqlは PostgreSQL share/extension フォルダの最上位に複写する必要があることに注意して下さい。
以上を実行すると、PgAdmin -> extension でpostgis, postgis_topologyが有効なエクステンションとして見えます。
psql を使う場合は、次のクエリを実行してエクステンションがインストールされていることを確認できます。
SELECT name, default_version, installed_version FROM pg_available_extensions WHERE name LIKE 'postgis%' ORDER BY name;
┌──────────────────┬─────────────────┬───────────────────┐ │ name │ default_version │ installed_version │ ├──────────────────┼─────────────────┼───────────────────┤ │ postgis │ 3.7.0dev │ 3.7.0dev │ │ postgis_raster │ 3.7.0dev │ 3.7.0dev │ │ postgis_sfcgal │ 3.7.0dev │ │ │ postgis_topology │ 3.7.0dev │ │ └──────────────────┴─────────────────┴───────────────────┘
クエリを行ったデータベースにエクステンションがインストールされている場合は、installed_versionカラムに記載が見えます。レコードが返ってこない場合は、PostGIS EXTENSION がインストールされていないことになります。PgAdmin III 1.14以上では、データベースブラウザツリーのextensionsセクションで提供されていて、右クリックでアップグレードまたアンインストールできます。
有効なエクステンションがある場合、pgAdmin エクステンションインタフェースまたは次の SQL の実行によって、選択したデータベースに PostGIS エクステンションをインストールできます。
CREATE EXTENSION postgis; CREATE EXTENSION postgis_raster; CREATE EXTENSION postgis_sfcgal; CREATE EXTENSION postgis_topology;
psql では、どの版が、どのスキーマにインストールされているかを見ることができます。
\connect mygisdb \x \dx postgis*
List of installed extensions ┌─[ RECORD 1 ]────────────────────────────────────────────────┐ │ Name │ postgis │ │ Version │ 3.7.0dev │ │ Schema │ public │ │ Description │ PostGIS geometry, geography, and raster… │ ├─[ RECORD 2 ]────────────────────────────────────────────────┤ │ Name │ postgis_raster │ │ Version │ 3.7.0dev │ │ Schema │ public │ │ Description │ PostGIS raster types and functions │ ├─[ RECORD 3 ]────────────────────────────────────────────────┤ │ Name │ postgis_topology │ │ Version │ 3.7.0dev │ │ Schema │ topology │ │ Description │ PostGIS topology spatial types and functions │ └─────────────────────────────────────────────────────────────┘
|
|
|
追加テーブルの |
素晴らしいエクステンション機構を使わずに3.7.0devをインストールした場合には、それぞれのエクステンションが持つ関数をパッケージするためのコマンドを実行して、エクステンションに基づくように変更できます。PostgreSQL 13では、パッケージしない方法でのインストールは削除されましたので、PostgreSQL 13にアップグレードする前にエクステンションをビルドするように変更するべきです。
CREATE EXTENSION postgis FROM unpackaged; CREATE EXTENSION postgis_raster FROM unpackaged; CREATE EXTENSION postgis_topology FROM unpackaged;
PostGIS のテストを行うには、次のコマンドを実行します。
make check
このコマンドで、実際の PostgreSQL データベースに対して生成したライブラリを使用した、様々なチェックとレグレッションテストを行います。
|
|
|
PostgreSQL, GEOS または Proj を標準の位置にインストールしていない場合には、環境変数 |
|
|
|
現在のところmake checkは、チェックを行う際に環境変数 |
|
|
|
PostgreSQL スーパーユーザーでないサンドボックス化したビルドアカウントは、 これらの変数によって、アカウントがスーパーユーザーになるためのプロンプトを使わずに完全なアップグレードとエクステンションのインストールをを実行するための自動化環境が可能となります。ただし、対象となる PostgreSQL インスタンスがこの委任ロールによるエクステンションのインストールが許可されている場合に限ります。 |
成功したなら、make check で約 500個のテストを生成します。結果は次のようなかんじになります (かなりの行を省略しています)。
CUnit - A unit testing framework for C - Version 2.1-3
http://cunit.sourceforge.net/
.
.
.
Run Summary: Type Total Ran Passed Failed Inactive
suites 44 44 n/a 0 0
tests 300 300 300 0 0
asserts 4215 4215 4215 0 n/a
Elapsed time = 0.229 seconds
.
.
.
Running tests
.
.
.
Run tests: 134
Failed: 0
-- if you build with SFCGAL
.
.
.
Running tests
.
.
.
Run tests: 13
Failed: 0
-- if you built with raster support
.
.
.
Run Summary: Type Total Ran Passed Failed Inactive
suites 12 12 n/a 0 0
tests 65 65 65 0 0
asserts 45896 45896 45896 0 n/a
.
.
.
Running tests
.
.
.
Run tests: 101
Failed: 0
-- topology regress
.
.
.
Running tests
.
.
.
Run tests: 51
Failed: 0
-- if you built --with-gui, you should see this too
CUnit - A unit testing framework for C - Version 2.1-2
http://cunit.sourceforge.net/
.
.
.
Run Summary: Type Total Ran Passed Failed Inactive
suites 2 2 n/a 0 0
tests 4 4 4 0 0
asserts 4 4 4 0 n/a
出力は次のようなかんじになります。
============== dropping database "contrib_regression" ============== DROP DATABASE ============== creating database "contrib_regression" ============== CREATE DATABASE ALTER DATABASE ============== installing fuzzystrmatch ============== CREATE EXTENSION ============== installing postgis ============== CREATE EXTENSION ============== running regression test queries ============== test test-normalize_address ... ok ===================== All 2 tests passed. =====================
PostGIS をインストールするには、次のコマンドを実行します。
make install
これにより、PostGIS のインストールファイルが、--prefixパラメータで指定した、適切なサブディレクトリに複写されます。次に特筆すべきサブディレクトリを示します。
ローダとダンパのバイナリのインストール先は[prefix]/binです。
postgis.sqlなどの SQL ファイルのインストール先は[prefix]/share/contribです。
PostGIS ライブラリのインストール先は[prefix]/libです。
先にmake commentsを実行してpostgis_comments.sql, raster_comments.sqlを生成していた場合は、次のコマンドを実行すると、これらの SQL ファイルがインストールされます。
make comments-install
|
|
|
|
インストールやアップグレードが思うようにいかない時にチェックすることがいくつかあります。
PostgreSQL バージョン不整合。
PostgreSQL 14以上をインストールしているか、実行中のPostgreSQL と同じ版のソースでコンパイルしているか、をチェックします。(Linux の) ディストリビューションによって既に PostgreSQL がインストールされている時や、 PostgreSQL を以前にインストールして忘れた場合に、 混乱が発生することがあります。PostGIS は PostgreSQL 14以上で動作します。古い版のものを使った場合には、おかしな予想外のエラーメッセージが表示されます。実行中のPostgreSQL の版をチェックするには、psql を使ってデータベースを接続して、次のクエリを実行して下さい。
SELECT version();
RPM ベースのディストリビューションを実行している場合には、 rpm コマンドでプリインストール済みパッケージの存在の確認が必要です。次のようにします:
rpm -qa | grep postgresql
PostGIS の無いデータベースへのアップグレードの格納。
アップグレードに失敗する場合、既に PostGIS がインストールされているデータベースにリストアしているか確認して下さい。
SELECT PostGIS_Full_Version();
また、コンフィギュアが正しく PostgreSQL、Proj4ライブラリ、GEOS ライブラリのインストール先を検出したかチェックして下さい。
コンフィギュアからの出力でpostgis_config.hファイルが作られます。POSTGIS_PGSQL_VERSION、POSTGIS_PROJ_VERSIONおよびPOSTGIS_GEOS_VERSION変数が正しくセットされたかをチェックして下さい。