RabbitMQ:未找到 erl

RabbitMQ:未找到 erl

当尝试使用时rabbitmqctl,我收到以下错误:

$ which rabbitmqctl
/usr/sbin/rabbitmqctl
$ sudo rabbitmqctl status
/usr/lib/rabbitmq/bin/rabbitmqctl: line 29: exec: erl: not found

(最有可能在其来源中/usr/sbin/rabbitmqctl调用: -猜测评估为)/usr/lib/rabbitmq/bin/rabbitmqctl/usr/lib/rabbitmq/bin/${SCRIPT}${SCRIPT}rabbitmqctl

但是,当简单地erl从 shell 访问时,我按预期到达 erlang shell

$ which erl
/usr/local/bin/erl
$ ls -la /usr/local/bin/erl
lrwxrwxrwx 1 root root 21 Jul 18 02:03 /usr/local/bin/erl -> ../lib/erlang/bin/erl
$ erl
Erlang R15B01 (erts-5.9.1) [source] [64-bit] [smp:16:16] [async-threads:0] [hipe] [kernel-poll:false]

Eshell V5.9.1  (abort with ^G)
1>

设置信息:

  • CentOS 6.2
  • Erlang R15B01 编译自otp_src_R15B01.tar.gz
  • 从 安装 RabbitMQ 2.8.4 rabbitmq-server-2.8.4-1.noarch.rpm。默认配置(无配置文件)。

小路:

$ echo $PATH
/usr/local/bin:/bin:/usr/bin:/usr/local/sbin:/usr/sbin:/sbin:/home/myuser/bin

查看了 的源代码后rabbitmqctl,似乎这只是对 的简单调用erl,没有任何魔法:

exec erl \
    -pa "${RABBITMQ_HOME}/ebin" \
    -noinput \
    -hidden \
    ${RABBITMQ_CTL_ERL_ARGS} \
    -sname rabbitmqctl$$ \
    -s rabbit_control \
    -nodename $RABBITMQ_NODENAME \
    -extra "$@"

似乎无法弄清楚真正的问题是什么......

答案1

正如所料,这是一个PATH问题:

$ sudo which erl
which: no erl in (/sbin:/bin:/usr/sbin:/usr/bin)

通过创建符号链接解决了这个问题erl

sudo ln -s /usr/local/bin/erl /usr/bin/erl

也许可以通过某种方式(或其他方式)/usr/bin避免符号链接。/usr/local/...

相关内容