renderd から Mapnik を使うときに 「no datasource plugin directories have been successfully registered」 って言われる問題
背景
renderd (mod_tile から使われるマルチスレッドのプロセス) から Mapnik を使って地図タイルをレンダリングしようとしている。
Linux ディストリビューションとして Ubuntu 18.04 を使用して、renderd は APT リポジトリ ppa:osmadmins/ppa の renderd パッケージを使用。 Mapnik もこのパッケージの依存パッケージ (libmapnik3.0) としてインストールされる。
上記パッケージで renderd をインストールした場合に自動的に生成される設定ファイルは /etc/renderd.conf に置かれ、その内容は下記のようになっている。
[renderd] stats_file=/var/run/renderd/renderd.stats socketname=/var/run/renderd/renderd.sock num_threads=4 tile_dir=/var/lib/mod_tile [mapnik] plugins_dir=/usr/lib/mapnik/2.0/input font_dir=/usr/share/fonts/truetype/ttf-dejavu font_dir_recurse=false [default] URI=/osm/ XML=/etc/mapnik-osm-data/osm.xml DESCRIPTION=This is the standard osm mapnik style ;ATTRIBUTION=©<a href=\"http://www.openstreetmap.org/\">OpenStreetMap</a> and <a href=\"http://wiki.openstreetmap.org/w\ iki/Contributors\">contributors</a>, <a href=\"http://creativecommons.org/licenses/by-sa/2.0/\">CC-BY-SA</a> ;HOST=tile.openstreetmap.org ;SERVER_ALIAS=http://a.tile.openstreetmap.org ;SERVER_ALIAS=http://b.tile.openstreetmap.org ;HTCPHOST=proxy.openstreetmap.org
遭遇した問題 : エラーが発生する
renderd のプロセスを起動した後、下記のようなエラーが発生していた。
An error occurred while loading the map layer 'ajt': Could not create datasource for type: 'shape' (no datasource plugin directories have been successfully registered) encountered during parsing of layer 'ocean-lz' in Layer at line 269 of '/home/renderaccount/src/openstreetmap-carto/mapnik.xml'
とか
An error occurred while loading the map layer 'ajt': Could not create datasource for type: 'postgis' (no datasource plugin directories have been successfully registered) encountered during parsing of layer 'landcover-low-zoom' in Layer at line 755 of '/home/renderaccount/src/openstreetmap-carto/mapnik.xml'
調べたこと
- Mapnik はプラグインアーキテクチャを採用している (参考 : PluginArchitecture · mapnik/mapnik Wiki)
- renderd から Mapnik を使うときには、renderd の設定ファイルに Mapnik の設定も記述する。
- 参考 : mod_tile/renderd.conf at master · openstreetmap/mod_tile · GitHub (
[mapnik]
と書かれている部分) - Mapnik のプラグインディレクトリもこのファイルで指定する。 (
plugins_dir=/usr/lib/mapnik/input
みたいなやつ)
- 参考 : mod_tile/renderd.conf at master · openstreetmap/mod_tile · GitHub (
- libmapnik3.0 パッケージのファイル一覧を見るとわかるように、/usr/lib/mapnik3.0/input がプラグインのディレクトリ