2019/10/20にPostGISのメジャーバージョンアップ3.0がリリースされました!
https://postgis.net/2019/10/20/postgis-3.0.0/
FindsJPさんがマニュアルの翻訳版を公開をしてくださっています。
ありがたいことです。
http://www.finds.jp/docs/pgisman/3.0.0/postgis-ja.html
↓ドメインが変わりました
http://aginfo.cgk.affrc.go.jp/docs/pgisman/3.0.0/index.html
というわけで
さっそくインストールしてみたので自分の備忘録として手順を残しておきます。
リポジトリの追加
参考:https://wiki.postgresql.org/wiki/Apt
PostgreSQLのリポジトリを追加しましょう。
$ sudo apt install curl ca-certificates
$ curl https://www.postgresql.org/media/keys/ACCC4CF8.asc | sudo apt-key add -
$ sudo sh -c 'echo "deb http://apt.postgresql.org/pub/repos/apt/ $(lsb_release -cs)-pgdg main" > /etc/apt/sources.list.d/pgdg.list'
パッケージリストを更新
$ sudo apt update
インストール
PostGIS3.0は PostgreSQL10 PostgreSQL9.5以降のバージョンに対応しています。
せっかくなので現時点で最新のPostgreSQL12と組み合わせてインストールをしてみたいと思います。
まずはパッケージ名を検索してみます。
$ sudo apt search postgresql-12
ソート中... 完了
全文検索... 完了
postgresql-12/bionic-pgdg 12.0-2.pgdg18.04+1 amd64
object-relational SQL database, version 12 server
<略>
postgresql-12-pgrouting/bionic-pgdg 2.6.2-1.pgdg18.04+1 amd64
Routing functionality support for PostgreSQL/PostGIS
<略>
postgresql-12-postgis-3/bionic-pgdg 3.0.0+dfsg-1.pgdg18.04+1 amd64
Geographic objects support for PostgreSQL 12
<略>
この中からpostgresql-12とpostgresql-12-postgis-3、postgresql-12-pgroutingをインストールします。
pgRoutingと一緒に入るPostGISのバージョンを確認するためにapt installで確認をしてみます。
$ sudo apt install postgresql-12-pgrouting
パッケージリストを読み込んでいます... 完了
依存関係ツリーを作成しています
状態情報を読み取っています... 完了
以下の追加パッケージがインストールされます:
cpp-7 gcc-7-base gcc-8-base gdal-data libaec0 libarmadillo8 libarpack2
libblas3 libboost-serialization1.65.1 libcc1-0 libcgal13 libdap25
libdapclient6v5 libepsilon1 libfreexl1 libfyba0 libgcc1 libgdal20
libgeos-3.7.1 libgeos-c1v5 libgeotiff2 libgfortran4 libgif7 libgmpxx4ldbl
libgomp1 libhdf4-0-alt libhdf5-100 libkmlbase1 libkmldom1 libkmlengine1
liblapack3 libminizip1 libmysqlclient20 libnetcdf13 libodbc1 libogdi3.2
libopenjp2-7 libpq5 libproj12 libprotobuf-c1 libqhull7 libquadmath0
libsfcgal1 libspatialite7 libstdc++6 libsuperlu5 libsz2 liburiparser1
libxerces-c3.2 mysql-common odbcinst odbcinst1debian2 pgdg-keyring
postgresql-12 postgresql-12-pgrouting-scripts postgresql-12-postgis-3
postgresql-12-postgis-3-scripts postgresql-client-12
postgresql-client-common postgresql-common proj-bin proj-data sysstat
提案パッケージ:
gcc-7-locales geotiff-bin gdal-bin libgeotiff-epsg libhdf4-doc
libhdf4-alt-dev hdf4-tools libmyodbc odbc-postgresql tdsodbc unixodbc-bin
ogdi-bin postgresql-12-pgrouting-doc postgis postgresql-doc-12 libjson-perl
isag
以下のパッケージが新たにインストールされます:
gdal-data libaec0 libarmadillo8 libarpack2 libblas3
libboost-serialization1.65.1 libcgal13 libdap25 libdapclient6v5 libepsilon1
libfreexl1 libfyba0 libgdal20 libgeos-3.7.1 libgeos-c1v5 libgeotiff2
libgfortran4 libgif7 libgmpxx4ldbl libhdf4-0-alt libhdf5-100 libkmlbase1
libkmldom1 libkmlengine1 liblapack3 libminizip1 libmysqlclient20
libnetcdf13 libodbc1 libogdi3.2 libopenjp2-7 libpq5 libproj12
libprotobuf-c1 libqhull7 libquadmath0 libsfcgal1 libspatialite7 libsuperlu5
libsz2 liburiparser1 libxerces-c3.2 mysql-common odbcinst odbcinst1debian2
pgdg-keyring postgresql-12 postgresql-12-pgrouting
postgresql-12-pgrouting-scripts postgresql-12-postgis-3
postgresql-12-postgis-3-scripts postgresql-client-12
postgresql-client-common postgresql-common proj-bin proj-data sysstat
以下のパッケージはアップグレードされます:
cpp-7 gcc-7-base gcc-8-base libcc1-0 libgcc1 libgomp1 libstdc++6
アップグレード: 7 個、新規インストール: 57 個、削除: 0 個、保留: 560 個。
51.0 MB 中 50.4 MB のアーカイブを取得する必要があります。
この操作後に追加で 189 MB のディスク容量が消費されます。
続行しますか? [Y/n]
インストールされるパッケージを確認すると、postgresql-12-pgroutingをインストールすればPostgreSQL12とPostGIS3.0も入るようですね。
では、「Y」でインストールを続行しましょう。
続行しますか? [Y/n] y
<略>
postgresql-12 (12.0-2.pgdg18.04+1) を設定しています ...
Creating new PostgreSQL cluster 12/main ...
/usr/lib/postgresql/12/bin/initdb -D /var/lib/postgresql/12/main --auth-local peer --auth-host md5
データベースシステム内のファイルの所有者はユーザ"postgres"となります。
このユーザをサーバプロセスの所有者とする必要があります。
データベースクラスタはロケール"ja_JP.UTF-8"で初期化されます。
デフォルトのデータベース符号化方式はそれに対応してUTF8に設定されました。
initdb: could not find suitable text search configuration for locale "ja_JP.UTF-8"
デフォルトのテキスト検索構成は simple に設定されます。
データベージのチェックサムは無効です。
ディレクトリ/var/lib/postgresql/12/mainの権限を設定しています ... ok
サブディレクトリを作成しています ... ok
動的共有メモリの実装を選択しています ... posix
デフォルトのmax_connectionsを選択しています ... 100
デフォルトの shared_buffers を選択しています ... 128MB
selecting default time zone ... Asia/Tokyo
設定ファイルを作成しています ... ok
ブートストラップスクリプトを実行しています ... ok
ブートストラップ後の初期化を実行しています ... ok
データをディスクに同期しています ... ok
成功しました。以下のようにしてデータベースサーバを起動することができます:
pg_ctlcluster 12 main start
<略>
正常にインストールされましたので起動してみます。
$ sudo pg_ctlcluster 12 main start
エラー無く起動したようです。
初期設定
postgresユーザーができているのでそちらに切り替えて作業をする。
$ sudo su - postgres
psqlコマンドで接続してpostgresアカウント(PostgreSQLのログインロール)のパスワード設定とテスト用データベースの作成をします。
$ psql
postgres=# ALTER USER postgres PASSWORD 'new_password';
ALTER ROLE
postgres=# create database testdb;
CREATE DATABASE
postgres=# \q
今度はテスト用データベースにpostgresアカウントで接続してPostGISとpgRoutingを有効にします。
$ psql -d testdb -U postgres
testdb=# CREATE EXTENSION postgis;
CREATE EXTENSION
testdb=# CREATE EXTENSION pgrouting;
CREATE EXTENSION
続いてバージョンを確認してみましょう。
testdb=# SELECT postgis_version();
postgis_version
---------------------------------------
3.0 USE_GEOS=1 USE_PROJ=1 USE_STATS=1
(1 行)
testdb=# SELECT * FROM pgr_version();
version | tag | hash | branch | boost
---------+--------+-----------+--------+--------
2.6.2 | v2.6.2 | b14f4d56b | master | 1.65.1
(1 行)
PostGIS3.0と、pgRouting2.6.2が入っていることが確認できました。
以上です。