そしてCentOSでPostGISが使えるようになった

2009/09/02 | PostgreSQL

半日とは言わないまでも、4、5時間くらいかかった。でも使えるようになってよかった・・・。使ったのはココのサイト。

https://projects.commandprompt.com/public/pgcore

PostgreSQLに関する最新の安定版RPMを各種ディストリビューションにむけて提供するという、なんとも神様みたいなサイト。いっそのことPostgreSQL本体もアップグレードしちゃったほうがいいわけだが、あくまで必要最小限を心がけた。ページの中ほどに「Direct Download」というのがあるのでそこをクリックし、該当するPostgreSQLのバージョンを選択する。CentOS5の場合は8.1。各バージョンにコメントがあってちょっと楽しい。ちなみに7.3はEOL(End of Life)。つまり「お前はもう死んでいる」ってやつですな。いちおう8.1はDecent release(相応)らしいが本当だかどうだか。

そして次の画面でredhatを選択。いろいろ出てくるがCentOS5をつかっているということで(かつx86_64)、rhel-5-x86_64を選ぶ。PostgreSQLに関するrpmがずらーっと一覧で表示される。まずは試しにpostgisをダウンロードし、rpmでインストールしてみた(postgis-1.3.6-1.rhel5.x86_64.rpm)。しかし「依存関係を解消してくださいよ」とエラーが出る。これは手作業では面倒だ。そこで、必殺技とでも言うべきyumを使うことになるのだが、これにはpgdg-centos-8.1-4.noarch.rpmを使う。まずはダウンロードしてインストール。

「yum install postgis」としてみたらPROJが必要といわれた。PROJはこちらのサイトになかったので、あらためてrpmfindからダウンロードしてインストールした。インストールしたのは以下の二つ。

proj-4.5.0-1.el5.rf.x86_64.rpm
proj-devel-4.5.0-1.el5.rf.x86_64.rpm

二つをインストールして再度「yum」。するとあら不思議。今まではyumしても「PostGISなんて知らないよ」といわれていたのに、手のひらを返したように、依存関係も解消してくれて、インストールしますかときいてくれる(「yum install postgis」とコマンドをうった)。もちろん「y」。これで無事PostGISをインストールできた。

もちろんここまではrpmfindだけでもできたけれど、ここから先が重要。ちなみにこの時点でデータベースにはtemplate_postgisが出来上がっている状態だった(それだけですごい進歩)。ちなみに入門書やブログなどで書かれているcrealtelangコマンドも入力された状態になっているようだ。いったんデータベースの中身をみてみたが、残念ながら何もはいっていない。関数なしの状態だ。そこは手動でやらなくてはいけないらしい。

本来なら「lwpostgis.sql」「spatial_ref_sys.sql」の二つのSQL文を実行するのだが、前述のPostGISのインストールでできたSQL文はファイル名が違っていた。

psql -d template_postgis -f /usr/share/pgsql/contrib/lwpostgis-64.sql
psql -d template_postgis -f /usr/share/pgsql/contrib/lwpostgis_upgrade-64.sql
psql -d template_postgis -f /usr/share/pgsql/contrib/postgis_comments.sql
psql -d template_postgis -f /usr/share/pgsql/contrib/spatial_ref_sys.sql

おまけに4つもSQL文があったが、いちおうそれらしい順番で流してみた。途中数行程度エラーが出ているような感じだが、とりあえず9割以上OKだったので、よしとすることにした!。完了!。

あと、必要最小限の関数が使えるかどうかチェックする必要はあるけれど、何はともあれ、インストールできたっぽいのでほっとした。よかった。

rpmfindだけではうまくいかず

2009/09/01 | PostgreSQL

さて、一通りPostGISのインストールも終了したけれど・・・結論から言うと、うまくいかなかった。インストール自体は成功したのだが、PostGISなデータベースを作成することができなかった。便利なコマンドがインストールされているのはとてもうれしかったのだが(mktemplate_gisとか)、そのコマンドがエラーのため途中でとまってしまう。いろいろ試したり調べたりしたけど、うまくいきそうにないので、別の方法を考えることにした。

そもそも、それ以前に間違えていたところがあって、x86_64環境をインストールしなくてはいけなかったっぽい。なぜ気づいたかというと、いろいろインストールしてみたわけだが、rpm -qa | grep postgresとコマンドをたたくと、なぜかpostgresql-develとか2つも入ってるし!。よくよく調べてみたら、i386とx86_64はそれぞれインストールできるらしくて、どうもごちゃまぜになっている感じ。ウェブで検索すると以下のコマンドで環境を表示させることができる。

rpm -q –queryformat “%{name}.%{arch}\n” postgresql-devel

出力のフォーマットを名前+環境で表示しなさいということなのだが、見事に二つ「.i386」と「.x86_64」がインストールされていた。っていうか、借りてるサーバの環境くらい調べておけばよかった。アンインストールはこのコマンドでOK。

rpm -e postgresql-devel.i386

多分、他でも応用できる。

そして、コレに基づいて調べたら、さっきインストールしたのはi386版。しかもRedHat向けじゃないものまで入れてるっぽい。というわけでせっせとrpm -eにてアンインストール。かなりの時間を無駄にしてしまった。

そして、めげずにいろいろ試した。実は、ソースからコンパイルすればうまくいくだろうと思ってやってみたけど、make installまでは成功するけど、その後PostGISなデータベースの作成でエラーが出てしまう。久々に長時間格闘してうまくいかないので、クライアントに「ごめんなさい」と言おうかとも思ったけど、いちおうもう少しがんばってみて、なんとか解決する方法を見つけることができた。しかもyumインストールできた!。

方法は後日掲載予定。


守谷市(まちの情報ポータル) 無料アンケートレンタルjpForm.net