编译rabbitMQ 2.4.1错误 - [] escript:脚本失败:...需要`ebin / bpqueue.beam'

时间:2011-06-10 19:50:14

标签: erlang rabbitmq amqp

rabbitMQ版本2.4.1 使用

构建失败
[]escript: script failed: {function_clause,
               [{erl_parse,
                    build_type,
                    [{atom,159,ok_or_error2},
                     [{type,pid,[]},{type,any,[]}]]},
                {erl_parse,yeccpars2,7},
                {erl_parse,yeccpars0,2},
                {epp,parse_file,2},
                {epp,parse_file,2},
                {epp,parse_file,2},
                {epp,parse_file,2},
                {epp,parse_file,2}]}
make: *** No rule to make target `deps.mk', needed by `ebin/
bpqueue.beam'.  Stop.

这是命令的历史。

    $ uname -a
    SunOS dev21 5.10 Generic_141445-09 i86pc i386 i86pc

$ erl --version
Erlang (BEAM) emulator version 5.5.5 [source] [async-threads:0]
[kernel-poll:false]

$ python --version
Python 2.6.2

$ make --version
GNU Make 3.81

$ wget 'http://www.rabbitmq.com/rabbitmq-signing-key-public.asc'

$ wget 'http://www.rabbitmq.com/releases/rabbitmq-server/v2.4.1/
rabbitmq-server-2.4.1.zip.asc'

$ wget 'http://www.rabbitmq.com/releases/rabbitmq-server/v2.4.1/
rabbitmq-server-2.4.1.zip'

$ gpg --verify rabbitmq-server-2.4.1.zip.asc rabbitmq-server-2.4.1.zip
gpg: Signature made Thu Apr 07 09:04:47 2011 PDT using DSA key ID
056E8E56
gpg: Good signature from "RabbitMQ Release Signing Key
<i...@rabbitmq.com>"

$ unzip rabbitmq-server-2.4.1.zip

$ cd rabbitmq-server-2.4.1

$ make clean
/bin/sh: python2.5: not found
rm -f ebin/*.beam
rm -f ebin/rabbit.app ebin/rabbit.boot ebin/rabbit.script ebin/
rabbit.rel
rm -f include/rabbit_framing.hrl src/rabbit_framing_amqp_*.erl
codegen.pyc
rm -f docs/*.[0-9].gz docs/*.man.xml docs/*.erl     src/
rabbit_ctl_usage.erl
rm -f rabbit.plt
rm -f deps.mk

$ make
/bin/sh: python2.5: not found
python codegen.py body codegen/amqp-rabbitmq-0.9.1.json src/
rabbit_framing_amqp_0_9_1.erl
python codegen.py body codegen/amqp-rabbitmq-0.8.json src/
rabbit_framing_amqp_0_8.erl
xsltproc --stringparam modulename "`basename src/
rabbit_ctl_usage.erl .erl`" \
            docs/usage.xsl docs/rabbitmqctl.1.xml > src/
rabbit_ctl_usage.erl.tmp
sed -e 's/"/\\"/g' -e 's/%QUOTE%/"/g' src/rabbit_ctl_usage.erl.tmp >
src/rabbit_ctl_usage.erl.tmp2
fold -s src/rabbit_ctl_usage.erl.tmp2 > src/rabbit_ctl_usage.erl.tmp3
mv src/rabbit_ctl_usage.erl.tmp3 src/rabbit_ctl_usage.erl
rm src/rabbit_ctl_usage.erl.tmp src/rabbit_ctl_usage.erl.tmp2
python codegen.py --ignore-conflicts header codegen/amqp-
rabbitmq-0.9.1.json codegen/amqp-rabbitmq-0.8.json include/
rabbit_framing.hrl
rm -f deps.mk
echo src/bpqueue.erl:src/delegate.erl:src/delegate_sup.erl:src/
file_handle_cache.erl:src/gatherer.erl:src/gen_server2.erl:src/
gm.erl:src/gm_soak_test.erl:src/gm_speed_test.erl:src/gm_tests.erl:src/
pg_local.erl:src/priority_queue.erl:src/rabbit.erl:src/
rabbit_access_control.erl:src/rabbit_alarm.erl:src/
rabbit_amqqueue.erl:src/rabbit_amqqueue_process.erl:src/
rabbit_amqqueue_sup.erl:src/rabbit_auth_backend.erl:src/
rabbit_auth_backend_internal.erl:src/rabbit_auth_mechanism.erl:src/
rabbit_auth_mechanism_amqplain.erl:src/
rabbit_auth_mechanism_cr_demo.erl:src/
rabbit_auth_mechanism_plain.erl:src/rabbit_backing_queue.erl:src/
rabbit_basic.erl:src/rabbit_binary_generator.erl:src/
rabbit_binary_parser.erl:src/rabbit_binding.erl:src/
rabbit_channel.erl:src/rabbit_channel_sup.erl:src/
rabbit_channel_sup_sup.erl:src/rabbit_client_sup.erl:src/
rabbit_command_assembler.erl:src/rabbit_connection_sup.erl:src/
rabbit_control.erl:src/rabbit_direct.erl:src/
rabbit_error_logger.erl:src/rabbit_error_logger_file_h.erl:src/
rabbit_event.erl:src/rabbit_exchange.erl:src/
rabbit_exchange_type.erl:src/rabbit_exchange_type_direct.erl:src/
rabbit_exchange_type_fanout.erl:src/
rabbit_exchange_type_headers.erl:src/
rabbit_exchange_type_topic.erl:src/rabbit_framing.erl:src/
rabbit_guid.erl:src/rabbit_heartbeat.erl:src/rabbit_limiter.erl:src/
rabbit_log.erl:src/rabbit_memory_monitor.erl:src/rabbit_misc.erl:src/
rabbit_mnesia.erl:src/rabbit_msg_file.erl:src/rabbit_msg_store.erl:src/
rabbit_msg_store_ets_index.erl:src/rabbit_msg_store_gc.erl:src/
rabbit_msg_store_index.erl:src/rabbit_net.erl:src/
rabbit_networking.erl:src/rabbit_node_monitor.erl:src/
rabbit_prelaunch.erl:src/rabbit_queue_collector.erl:src/
rabbit_queue_index.erl:src/rabbit_reader.erl:src/
rabbit_registry.erl:src/rabbit_restartable_sup.erl:src/
rabbit_router.erl:src/rabbit_sasl_report_file_h.erl:src/
rabbit_ssl.erl:src/rabbit_sup.erl:src/rabbit_tests.erl:src/
rabbit_tests_event_receiver.erl:src/rabbit_types.erl:src/
rabbit_upgrade.erl:src/rabbit_upgrade_functions.erl:src/
rabbit_variable_queue.erl:src/rabbit_version.erl:src/
rabbit_vhost.erl:src/rabbit_writer.erl:src/supervisor2.erl:src/
tcp_acceptor.erl:src/tcp_acceptor_sup.erl:src/tcp_listener.erl:src/
tcp_listener_sup.erl:src/test_sup.erl:src/vm_memory_monitor.erl:src/
worker_pool.erl:src/worker_pool_sup.erl:src/worker_pool_worker.erl:src/
rabbit_framing_amqp_0_9_1.erl:src/rabbit_framing_amqp_0_8.erl:src/
rabbit_ctl_usage.erl:include/gm_specs.hrl:include/rabbit.hrl:include/
rabbit_auth_backend_spec.hrl:include/
rabbit_auth_mechanism_spec.hrl:include/
rabbit_backing_queue_spec.hrl:include/
rabbit_exchange_type_spec.hrl:include/rabbit_msg_store.hrl:include/
rabbit_msg_store_index.hrl:include/rabbit_framing.hrl: | escript
generate_deps deps.mk ebin
[]escript: script failed: {function_clause,
               [{erl_parse,
                    build_type,
                    [{atom,159,ok_or_error2},
                     [{type,pid,[]},{type,any,[]}]]},
                {erl_parse,yeccpars2,7},
                {erl_parse,yeccpars0,2},
                {epp,parse_file,2},
                {epp,parse_file,2},
                {epp,parse_file,2},
                {epp,parse_file,2},
                {epp,parse_file,2}]}
make: *** No rule to make target `deps.mk', needed by `ebin/
bpqueue.beam'.  Stop.

Again, the notable error was

rabbit_msg_store_index.hrl:include/rabbit_framing.hrl: | escript generate_deps deps.mk ebin []escript: script failed: {function_clause, [{erl_parse, build_type, [{atom,159,ok_or_error2}, [{type,pid,[]},{type,any,[]}]]}, {erl_parse,yeccpars2,7}, {erl_parse,yeccpars0,2}, {epp,parse_file,2}, {epp,parse_file,2}, {epp,parse_file,2}, {epp,parse_file,2}, {epp,parse_file,2}]} make: *** No rule to make target `deps.mk', needed by `ebin/bpqueue.beam'. Stop.*

1 个答案:

答案 0 :(得分:1)

问题是使用的erlang版本。
这是我的完整解决方案(最初发布here))

步骤0.错误消息

# My version of Sun OS (Solaris). 
$ uname -a 
SunOS dev21 5.10 Generic_141445-09 i86pc i386 i86pc 

# my version of erlang (the problem source)
$ erl --version 
Erlang (BEAM) emulator version 5.5.5 [source] [async-threads:0] 
[kernel-poll:false] 

# making rabbitMQ server version 2.4.1 (here is the failure)
$ make 
...
[]escript: script failed: {function_clause, 
                   [{erl_parse, 
                        build_type, 
                        [{atom,159,ok_or_error2}, 
                         [{type,pid,[]},{type,any,[]}]]}, 
                    {erl_parse,yeccpars2,7}, 
                    {erl_parse,yeccpars0,2}, 
                    {epp,parse_file,2}, 
                    {epp,parse_file,2}, 
                    {epp,parse_file,2}, 
                    {epp,parse_file,2}, 
                    {epp,parse_file,2}]} 
make: *** No rule to make target `deps.mk', needed by `ebin/ 
bpqueue.beam'.  Stop. 

步骤1. the problem source(erlang版本)

  

来自:Emile Joubert&lt; em ... @ rabbitmq.com&gt;
   主题:Re:[rabbitmq-discuss]构建失败:`deps.mk',需要`ebin / bpqueue.beam'

     
    

$ erl --version
    Erlang(BEAM)模拟器版本5.5.5 [源代码] [async-threads:0]

  
     

不幸的是R11B-5太旧了。你需要至少建造R12B-5和R12B-3来运行兔子。在Solaris上构建最新版本的Erlang是相当直接的。

第2步。我在Solaris上安装rabbitMQ服务器2.4.1的完整解决方案:

#!/usr/bin/env bash
set -eu

# check versions (for good bug reports) 
python --version 
# ouput: Python 2.6.2
make --version
gcc --version
# ouput: gcc (GCC) 3.4.3 (csl-sol210-3_4-branch+sol_rpath)

# create a work space 
cd ${HOME} 
mkdir rabbitmq-workspace 
cd rabbitmq-workspace 

# get erlang R12B-5 
ERLANG_HOME=${HOME}/erlang-R12B-5 
PATH="${ERLANG_HOME}:${ERLANG_HOME}/bin:${PATH}" 
export PATH 
wget 'http://www.erlang.org/download/otp_src_R12B-5.tar.gz' 

# compile erlang R12B-5 
gunzip -c otp_src_R12B-5.tar.gz | tar -xvf - 
cd 'otp_src_R12B-5'
LANG=C 
export LANG # Bourne shell 
./configure --prefix="${ERLANG_HOME}" 
make 
make install 
${ERLANG_HOME}/bin/erl -version
# ouput: Erlang (ASYNC_THREADS,HIPE) (BEAM) emulator version 5.6.5
cd ..

# get rabbitmq server
wget 'http://www.rabbitmq.com/rabbitmq-signing-key-public.asc' 
wget 'http://www.rabbitmq.com/releases/rabbitmq-server/v2.4.1/rabbitmq- 
server-2.4.1.zip.asc' 
wget 'http://www.rabbitmq.com/releases/rabbitmq-server/v2.4.1/rabbitmq- 
server-2.4.1.zip' 
gpg --verify rabbitmq-server-2.4.1.zip.asc rabbitmq-server-2.4.1.zip 

# compile rabbitmq server
unzip rabbitmq-server-2.4.1.zip 
cd rabbitmq-server-2.4.1 
make clean 
make 

# run rabbitmq server 
PATH="${ERLANG_HOME}/bin:${PATH}"
# NOTE that the default "sh" on Solaris will fail to run the script - must use "xpg4 sh"
sudo /usr/xpg4/bin/sh ./scripts/rabbitmq-server