homebrewでmapserverをインストールしたときのエラー


homebrewを利用して、mapserverをインストールしようとしたところ、以下のようなエラーが発生した。

$ brew install mapserver --with-cairo --with-fastcgi --with-geos --with-php --with-postgresql

・・・
==> Downloading http://download.osgeo.org/mapserver/mapserver-6.2.2.tar.gz
Already downloaded: /Library/Caches/Homebrew/mapserver-6.2.2.tar.gz
==> Patching
patching file mapscript/python/setup.py
Hunk #1 FAILED at 32.
Hunk #2 FAILED at 149.
2 out of 3 hunks FAILED -- saving rejects to file mapscript/python/setup.py.rej
Error: Failure while executing: /usr/bin/patch -g 0 -f -p1

毎度のことながら、サクッと一発でインストールできないものかと。。。ただ、こういったエラーに遭遇することは、自分のスキルアップのきっかけにもなるので、前向きに向き合うことに。

まずはエラーメッセージを確認

どうもpatchを適用しようとして、エラーになっている節が見受けられる。
この時点では、何が何やらさっぱり訳がわからなかったので、まずはmapserverのformula(:ビルド手順)を確認することにした。

なお、mapserverのformulaは、以下のコマンドで確認できる。 

$ brew edit mapserver

mapserverのformulaを見てみると

気になる箇所を一箇所見つけた!!

class Mapserver < Formula
  desc "Publish spatial data and interactive mapping apps to the web"
  homepage 'http://mapserver.org/'
  url 'http://download.osgeo.org/mapserver/mapserver-6.2.2.tar.gz'
  sha256 '79b81286dde030704f59a668a19e5b01af27bb35d05b3daf91cefe06ca29ffd9'
・・・
  # This patch can be removed when this is merged https://github.com/mapserver/mapserver/pull/5113
  patch :DATA

  def install
    args = [
      "--prefix=#{prefix}",
      "--with-proj",
      "--with-gdal",
      "--with-ogr",
      "--with-wfs",
    ]
・・・

注目したいのは、この箇所

# This patch can be removed when this is merged https://github.com/mapserver/mapserver/pull/5113
patch :DATA

コメントを確認すると、https://github.com/mapserver/mapserver/pull/5113がマージされたときは、このパッチは削除して良いよと書いてある。

で実際に、そのサイトを辿って確認すると

This fixes build with homebrew. It should probably be also applied to 6.4 and 7.0.

多分、mapserverのVer6.0かV7.0に適用したほうが良いんじゃないかと書いている。

mapserverのバージョン確認

2015/07/18現在、homebrewでインストールできるmapserverのバージョンを調べてみると、

$ brew info mapserver
mapserver: stable 6.2.2 (bottled)
・・・

ん? 6.2.2がインストールされる?
ということは、今回のパッチは適用しなくても良いのだろうか???

試しに、mapserverのformulaを以下のように変更して、再度インストールを試みてみた。

# This patch can be removed when this is merged https://github.com/mapserver/mapserver/pull/5113
#patch :DATA // 今回コメントアウトした。

結果として

以下の結果の通り。うまくインストールできた。

$ brew install mapserver --with-cairo --with-fastcgi --with-geos --with-php --with-postgresql
==> Downloading http://download.osgeo.org/mapserver/mapserver-6.2.2.tar.gz
######################################################################## 100.0%
==> ./configure --prefix=/usr/local/Cellar/mapserver/6.2.2 --with-proj --with-gdal --with-ogr --with-wfs --with-geos --with-php=/usr/bin/php
==> make
==> make install PHP_EXT_DIR=/usr/local/Cellar/mapserver/6.2.2
==> Caveats
The Mapserver CGI executable is /usr/local/Cellar/mapserver/6.2.2/bin/mapserv

If you built the PHP option:
  * Add the following line to php.ini:
    extension="/usr/local/Cellar/mapserver/6.2.2/php_mapscript.so"
  * Execute "php -m"
  * You should see MapScript in the module list

==> Summary
🍺  /usr/local/Cellar/mapserver/6.2.2: 17 files, 2.1M, built in 29 seconds

patchをコメントアウトした影響については、よく分かっていないが、僕的にはphpでmapscriptとpostgresqlへの接続が上手くいけば、ひとまずは用足りるので、これで進めることにした。