LoginSignup
0
3

More than 3 years have passed since last update.

Ubuntu18.04 LTSにpgRouting環境を構築してみる PostGIS3.0編

Last updated at Posted at 2019-10-28

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が入っていることが確認できました。

以上です。

0
3
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
3