つかびーの技術日記

情報系修士卒のWeb系技術日記です。現在のフォーカス分野はアドテクです。

Macに最新のabコマンドをインストールする

   

こんにちは、@s_tsukaです。

今回はMacにデフォルトで入っているabコマンドのバージョンを最新化する方法について解説します。

結論から言うとインストールはできたんですが、希望通りのversionは使えませんでした。実行する前に最後まで読んで頂けたらと思います。

発端

先日Amazon API Gatewayを使ったのですが、ここで生成されたURIに対してabコマンドが叩けない現象に陥りました。

実行するとこのようなエラーが出てしまします。

これはabコマンドがTLS1.2に対応できていないため・・・と思ったんですが、どうやら違うようです。abがSNIに対応していないようです。なので最新のabを使ってもだめぽいのですが・・・

とりあえず、abコマンドを最新化します。

abコマンドを最新化

残念ですがソースからビルドするしかありません。

以下のページを参考にやっていきます。

http://adventuresincoding.com/2012/05/how-to-get-apachebenchab-to-work-on-mac-os-x-lion

http://stackoverflow.com/questions/18076157/why-does-configure-say-no-c-compiler-found-when-gcc-is-installed

まずはここから最新のソースを取得します。

http://apache.mirrors.pair.com/httpd/

2015年8月現在2.4.16が最新のようです。なお、abコマンドのTLS1.2サポートは2.4.4からです。

次にbrewで正規表現ライブラリであるpcreを入れておきます。

ビルドします。configureでエラーが出た人は次節のトラブルシューティングを参考にしてください。

最後にabコマンドだけが欲しいのでそれをコピーして、不要な物は消します。

 トラブルシューティング

指示通りにやってもMacOS X 10.9以上を利用しているとこのようなエラーが出ます。

config.logの中を見てみても同様のエラーが出ています。

これは以下のページに書いてる通り、AppleがApache moduleのビルドが出来ないように変えてしまったためです・・。

https://code.google.com/p/modwsgi/issues/detail?id=312

なので指示通りlnで対応します。

 結論

最新のhttpdをビルドしたのになぜかabコマンドはversion 2.3のようでTLS1.2対応していないというオチでした。しかもabを叩きたい先、つまりAmazon API Gatewayの問題はTLS1.2が問題ではなくてSNIが問題っぽくて。時間を無駄にしました・・・

けどまあabコマンドを再インストールしたい人は居ると思いますので、とりあえずこの記事を残しておきます。再インストール自体は普通に上記の手順で行けると思います。

 - ツール , , , , ,