質問: ### 前提・実現したいこと いつも大変お世話になっております。 今回はAmazon Linux 上に RabbitMQ 3.6.6 をインストールするため、前提となるErlang R16B-03をインストールしようとしております。 参照: ### 発生している問題・エラーメッセージ 下記の通りErlang R16B-03がインストールされていることを確認できたのですが、RabbitMQインストール時にR16B-03が必要だと怒られてしまいます。 ``` $ erl -V Erlang R16B03 (erts-5.10.4) [source] [64-bit] [async-threads:10] [kernel-poll:false] Eshell V5.10.4 (abort with ^G) ``` ``` $ rpm -ivh rabbitmq-server-3.6.6-1.el6.noarch.rpm error: Failed dependencies: erlang >= R16B-03 is needed by rabbitmq-server-3.6.6-1.el6.noarch ``` ### 試したこと Erlang R16B-03 のインストール手順は以下の通りです。 ``` $ cd /usr/local/src $ wget http://www.erlang.org/download/otp_src_R16B03.tar.gz $ tar xvzf otp_src_R16B03.tar.gz $ cd otp_src_R16B03 $ ./configure $ make $ make install ``` ### 補足情報(言語/FW/ツール等のバージョンなど) Amazon Linux AMI release 2016.09 Erlang R16B03 RabbitMQ 3.6.6 その他必要な情報があればお知らせください。
回答: ここで、rabbitmq-server の RPM パッケージが要求しているのは、RPM パッケージでインストールした Erlang になります。そのため、別の方法でインストールした Erlang を認識してくれないのだと思います。 対応法は2種類あると思います。 1. ソースコードからビルドしてインストールした Erlang を **削除** し、RPM パッケージでインストールする 2. ソースコードからビルドしてインストールした Erlang を **キープ** し、rabbitmq-server の RPM を、Erlang パッケージへの依存関係を無視してインストールする RabbitMQ のドキュメントでは1番の方法を勧めているようで、そこには、3種類のパッケージ入手方法が書かれています。 * Erlang Solutions が用意した RPM を使用する。(最新版も含め、さまざまなバージョンの Erlang/OTP が用意されている) * RabbitMQ プロジェクトが用意した RPM を使用する。(RabbitMQ を動かすのに必要なライブラリだけが含まれたスリムダウン版だそうです) * EPEL リポジトリを有効にして、EPEL に用意された RPM を使用する。(バージョンが古いことが多いので、あまりおすすめではないです) 2番の方法は、試してないので間違っているかもしれませんが、rabbitmq-server インストール時の `rpm` コマンドに `--nodeps` オプションを付ければいいはずです。 どの方法で対応してもいいと思いますが、もし、RabbitMQ を動かすためだけに Erlang が必要ということでしたら、1番の2つ目の方法(RabbitMQ プロジェクトが用意した RPM を使用する)が、無駄がなくて良さそうに思えます。