尝试使用时rabbitmqctl,出现以下错误:
$ which rabbitmqctl
/usr/sbin/rabbitmqctl
$ sudo rabbitmqctl status
/usr/lib/rabbitmq/bin/rabbitmqctl: line 29: exec: erl: not found
Run Code Online (Sandbox Code Playgroud)
(/usr/sbin/rabbitmqctl最有可能/usr/lib/rabbitmq/bin/rabbitmqctl在其来源中调用:/usr/lib/rabbitmq/bin/${SCRIPT}- guessing${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>
Run Code Online (Sandbox Code Playgroud)
设置信息:
otp_src_R15B01.tar.gz rabbitmq-server-2.8.4-1.noarch.rpm. 默认配置(无 conf 文件)。小路:
$ echo $PATH
/usr/local/bin:/bin:/usr/bin:/usr/local/sbin:/usr/sbin:/sbin:/home/myuser/bin
Run Code Online (Sandbox Code Playgroud)
查看 的来源后rabbitmqctl,这似乎只是对 的简单调用erl,不涉及任何魔法:
exec erl \
-pa "${RABBITMQ_HOME}/ebin" \
-noinput \
-hidden \
${RABBITMQ_CTL_ERL_ARGS} \
-sname rabbitmqctl$$ \
-s rabbit_control \
-nodename $RABBITMQ_NODENAME \
-extra "$@"
Run Code Online (Sandbox Code Playgroud)
似乎无法弄清楚真正的问题是什么......
正如预期的那样,这是一个PATH问题:
$ sudo which erl
which: no erl in (/sbin:/bin:/usr/sbin:/usr/bin)
Run Code Online (Sandbox Code Playgroud)
通过为erl以下对象创建符号链接解决了这个问题:
sudo ln -s /usr/local/bin/erl /usr/bin/erl
Run Code Online (Sandbox Code Playgroud)
也许/usr/bin可以以某种方式(/usr/local/...或其他方式)避免符号链接。
| 归档时间: |
|
| 查看次数: |
13387 次 |
| 最近记录: |