Qiita4日目の記事です。ngx_mrubyらが取り巻く環境を期待せずにいられません。つまらない前置きはさておき、本題を話します。要件は以下のとおりです。利用したいこれら要件を満たすにあたって生じた課題とその解決策について共有したいと思います。いえ、生じた課題というのも、本質的にはたった1つしかありません。Linuxの生態系が非常に古いパッケージ群によって成り立っていることは周知のことと思われます。そのため、新しいアーキテクチャを導入しようとする際に、これらパッケージの古さのせいで利用するまでに苦労することが少なくありません。6系でngx_mrubyをビルドしようとした際に、以下の2つの「古さ」に衝突してしまいました。memcached_behavior_tが宣言されていないと言われて失敗してしまいます。これはlibmemcached-develのバージョンが古いのが原因で、remiリポジトリから新しいlibmemcached-develパッケージをインストールすることで解決します。libmemcached-last-develRHEL5系と6系では、libmemcachedのdevelパッケージ名が異なることに注意してください。6系ではlastという文字がついていますが、5系はlibmemcached-develです。1.9以上でしかビルドできません。CentOSでやると色々ハマるので、ある意味理解深まりますね...ubuntuだと何も迷わずビルドできるので楽ですが。8この問題は、ruby-build等を使って、1.9以上のRubyを利用することで解決します。PATH=/usr/local/ruby21/bin:$PATHredis/vedisからmemcachedに切り替えるngx_mrubyでmemcachedを利用するためには、build_config.rbを編集する必要があります。mruby-vedisが有効化されており、mruby-memcachedはコメントアウトされています。)エディタを開いて編集するのはやや面倒なので、perl3行で実現します。6系でもngx_mrubyをビルドすることが出来るようになります。(これ以外のrubyやngx_mrubyをビルドするために必要なパッケージについては省略していますが。optionsが個人的な用途に基づいているので、汎用性にはやや欠けますが、似たような環境でngx_mrubyをビルドしたい方がいらっしゃいましたら、ご参考にどうぞ。明日5日目はMarcyさんの「ISUCON4予選問題をngx_mrubyだけで解いてみた(ノウハウ編)」になります。operations.。