結論からいうとできたんだけど、ちょっとハマった。
ちょっと、本当にちょっとだけ ngx_mruby 試してみたくて、簡単に入ればいいなーと思って、探して↓を見て喜々として試したわけだけど
ngx_mrubyがHomebrewで超簡単にインストールできるようになった - 人間とウェブの未来
既に issue を上げてる人がいたけど、今 brew install nginx-full --with-mruby-module
としても一発でインストールできない。
こんな感じで。どう考えても書き込み権限あるディレクトリに書き込めなくて死ぬ。
brew install nginx-full --with-mruby-module ==> Installing nginx-full from homebrew/nginx ==> Downloading https://nginx.org/download/nginx-1.12.1.tar.gz ######################################################################## 100.0% ==> git init Last 15 lines from /Users/xxx/Library/Logs/Homebrew/nginx-full/01.git: 2017-08-13 15:21:22 +0900 git init error: could not lock config file /usr/local/Cellar/mruby-nginx-module/1.20.0/share/mruby-nginx-module/.git/config: Operation not permitted fatal: could not set 'core.repositoryformatversion' to '0'
原因は --verbose
するとわかるけど homebrew は sandbox-exec
を使って sandbox 下でビルドするようになってて、それを想定していないこの formula がおかしくなってしまった様子。
homebrew の 1.0.0 が出たのが2016年9月で、1.0.0 から sandbox を使うようになったから恐らくそれからインストールできなくなってしまったんだろう。(きっと)
mruby の install スクリプトが git 管理されていることを想定されているとかコメントに書かれていたりするし homebrew のことも mruby のことも何も知らないので自分がちょっと調べて直せるってことはなさそうだったので、とりあえず今回は --no-sandbox
オプションで回避した。
これでイケると思ったんだけど、まだうまくいかず。
ld でエラーが出てどうも openssl あたりのリンクがうまくいかない。
これもどうすればうまくいくのかわからなかったので、 forkしてオプションを追加して 、 brew edit してしまうというイケてない方法で回避した。
ちゃんと読んでないけど LIBS で -lcrypto は普通に指定されているような気がするので、これは自分の環境が悪いのかもしれないし、ちょっと今試したいだけで特に真面目にそこを調べるほど時間掛けたくはないのでとりあえず無視…
また使うことがあれば調べる。
あと今回は自宅の mac 上で使いたかったから brew で入れたかったんだけど普通に ngx_mruby 試すだけなら docker とかあるしそっち使うほうがいいだろうね。(というか mac 上でとはいえ docker でできない理由はなかった)