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


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

```shell-session
$ 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は、以下のコマンドで確認できる。　

```shell-session
$ 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](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のバージョンを調べてみると、

```shell-session
$ 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 // 今回コメントアウトした。
```

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

```shell-session
$ 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への接続が上手くいけば、ひとまずは用足りるので、これで進めることにした。