要約:CentOS7の仮想マシンで。既にパッケージがありyumで簡単にできました。いつもと少し違ったのは、yum clean allでレポジトリを最新にするのと、インストールオプション--nogpgcheckが必要だった点。
実行環境
ホストOS:Windows7 32bit ゲストOS:CentOS7 64bit 仮想化ソフトウェア:Portable VirtualBox 詳細は下記にあります。今回、パッケージのインストールまでホストOSからSSH接続で行い(その準備が7/8の記事)、その後データベースへのインストール~結果を確認するまでは、ホストOSからpgAdminで接続して行いました(その準備が7/10の記事)。 仮想マシン起動と同時にPostgreSQLサーバも動いてますが、今日の作業はすべてそのままで可能でした(サーバ停止・再起動不要)。下は、起動中の仮想マシンをVirtualBoxで見たところ。起動後しばらくすると省電力機能か何かが働き、小さく表示されるディスプレイも真っ暗になってます。
パッケージ確認
以下、SSHクライアントをConEmuで起動して作業した様子。ConEmuでなく普通のコマンドプロンプトでも同じだと思います。最初にゲスト機に接続してPostGISのパッケージを確認すると古いバージョン2.0.7のみ、PostgreSQL 9.5対応かどうかも不明。
ssh -p 2233 postgres@localhost
...
yum list | grep postgis

Repodata is over 2 weeks old. Install yum-cron? Or run:
yum makecache fast
postgis.x86_64                        2.0.7-1.el7
       epel
postgis-docs.x86_64                   2.0.7-1.el7
       epel
postgis-utils.x86_64                  2.0.7-1.el7
       epel
Repodata関連のメッセージを手がかりにウェブ検索すると、下記でyum clean allすればよいとの情報。確かにそうで、ちゃんとPostgreSQL 9.5用のバージョン2.1.8がありました。
su
yum clean all
yum list | grep postgis
...
postgis2_95.x86_64                    2.1.8-1.rhel7
       pgdg95
postgis2_95-client.x86_64             2.1.8-1.rhel7
       pgdg95
postgis2_95-debuginfo.x86_64          2.1.8-1.rhel7
       pgdg95
postgis2_95-devel.x86_64              2.1.8-1.rhel7
       pgdg95
postgis2_95-docs.x86_64               2.1.8-1.rhel7
       pgdg95
postgis2_95-utils.x86_64              2.1.8-1.rhel7
       pgdg95
メインのパッケージ以外に-clientと-utilsというのがあり、どちらかにshp2pgsqlなどデータインポート時に使うコマンドラインツールが入っているかも。yum infoでは詳しい情報はなし。とりあえず今回はスルーして、メインのパッケージだけ入れます。
yum info postgis2_95-client
...
Description : The postgis-client package contains the
            : client tools and their libraries of
            : PostGIS.

yum info postgis2_95-utils
...
Description : The postgis-utils package provides the
            : utilities for PostGIS.
パッケージのインストール
いつものようにyum installすると ↓ 関連パッケージがずらずらっと表示されましたが、最後に署名がないと言われてインストールされません。
su
yum -y install postgis2_95
...
Package postgis2_95-2.1.8-1.rhel7.x86_64.rpm is not signed
さっきと同様にウェブ検索すると、下記に解決策が。--nogpgcheckオプションを付けることで未署名のパッケージをインストールできるらしく、確かにそうでした。
su
yum -y install postgis2_95 --nogpgcheck
...
Complete!
PostgreSQLのディレクトリでライブラリを見て、PostGIS 2.1があることを確認。
ls /usr/pgsql-9.5/lib
...
postgis-2.0.so
postgis-2.1.so
仮想マシンの操作は以上で終わり。後はpgAdminで作業します。
データベースへのインストールと結果確認
7月10日の記事の最後に、この仮想マシンのPostgreSQL 9.5 Alpha 1にホストOS(Windows)のpgAdminから接続できる設定をしました。オブジェクトブラウザで見ると ↓ こんな感じ(他のサーバのIPアドレス等は、見やすさのため省略してます)。 まだデータベースがpostgresしかないので、いったんこれに接続して、PosGIS用の新しいデータベースを作ります。ロケールはデフォルト(en_US.UTF-8)でもいいですが、もしかしてWindowsへ持ってくることを考えCに変更。(Windows版PostgreSQLではUTF-8系のロケールにできない)
CREATE DATABASE test_postgis21
  WITH ENCODING = 'UTF8'
       TEMPLATE = 'template0'
       LC_COLLATE = 'C'
       LC_CTYPE = 'C';
クエリツールの接続先を作成したデータベースに変更してから(よく忘れる)、CREATE EXTENSION文でインストール。これだけ。
CREATE EXTENSION postgis;
↓ オブジェクトブラウザで見ると、確かにPostGIS 2.1.8の関数や型が入ってます。 ↓ PostGISの詳細バージョンを確認するクエリ。
SELECT postgis_full_version();
...
POSTGIS="2.1.8 r13780" GEOS="3.4.2-CAPI-1.8.2 r3921" PROJ="Rel. 4.8.0, 6 March 2012" GDAL="GDAL 1.11.2, released 2015/02/10" LIBXML="2.9.1" LIBJSON="UNKNOWN" RASTER
上の結果のうちLIBJSONがUNKNOWNで、ライブラリが足りなかった?と思いましたが、下記のインストールガイドでも同様なので大丈夫そう。もしGeoJSON関連などで問題が出たら追記します。
SELECT postgis_full_version();

POSTGIS="2.1.3 r12547" GEOS="3.4.2-CAPI-1.8.2 r3921" PROJ="Rel. 4.8.0, 6 March 2012" GDAL="GDAL 1.10.1, released 2013/08/26" LIBXML="2.9.1" LIBJSON="UNKNOWN" RASTER