読者です 読者をやめる 読者になる 読者になる

debian で SpatiaLite をコンパイルしてみた話

本当にコンパイルしてみただけの話です。
その時の作業メモ。
docker 上の debian 7.8 で作業しています。

まずは build-essential を入れます。

$ apt-get install build-essential -y

作業は ~/src で行っています。

SQLite をビルドします。

$ wget http://www.sqlite.org/2015/sqlite-autoconf-3080803.tar.gz
$ tar xvf sqlite-autoconf-3080803.tar.gz
$ cd sqlite-autoconf-3080803/
$ ./configure
$ make
# make install
$ where sqlite3
sqlite3: /usr/local/bin/sqlite3

これは簡単。

続いて spatialite-tools のビルドです。 必要なライブラリを追加で入れておきます。
./configure で認識もらえなかったものはソースからビルドして入れました。

# apt-get install libreadline-dev zlib1g-dev libfreexl-dev libxml2-dev python-dev pkg-config -y

spatialite-tools に必要らしいライブラリ等を順番にビルドします。
まず expat

$ links sourceforge.jp/projects/sfnet_expat/releases/
$ tar xvf expat-2.1.0.tar.gz
$ cd expat-2.1.0/
$ ./configure
$ make
# make install
$ cd ../

続いて libgeos、./configure で4つの言語に false がついても make できるみたいです。

$ wget http://download.osgeo.org/geos/geos-3.4.2.tar.bz2
$ tar xvf geos-3.4.2.tar.bz2
$ ./configure
(略)
config.status: executing libtool commands
Swig: false
Python bindings: false
Ruby bindings: false
PHP bindings: false
$ make
# make install
$ cd ../

さらに proj

$ wget http://download.osgeo.org/proj/proj-4.9.1.tar.gz
$ tar xvf proj-4.9.1.tar.gz
$ cd proj-4.9.1/
$ ./configure 
$ make
# make install
$ cd ../

libxml2

$ wget ftp://xmlsoft.org/libxml2/libxml2-git-snapshot.tar.gz
$ tar xvf libxml2-git-snapshot.tar.gz
$ cd libxml2-2.9.2/
$ ./configure
$ make
# make install
$ cd ../

次は libspatialite

$ wget http://www.gaia-gis.it/gaia-sins/libspatialite-4.2.0.tar.gz
$ tar xvf libspatialite-4.2.0.tar.gz
$ cd libspatialite-4.2.0/
$ ./configure
$ make
# make install
$ cd ../

libreadosm も必要らしい

$ wget http://www.gaia-gis.it/gaia-sins/readosm-1.0.0d.tar.gz
$ tar xvf readosm-1.0.0d.tar.gz
$ ./confiure
$ make
# make install
$ cd ../

ついに spatialite-tools

$ wget http://www.gaia-gis.it/gaia-sins/spatialite-tools-4.2.0.tar.gz
$ cd spatialite-tools-4.2.0/
$ ./confiure
$ make
# make install
$ cd ../

やっと終わりました。
結構依存関係が多くて、コンパイルが終わった頃には spatialite で何をやろうと思っていたのか忘れていましました。 ダメじゃん。