I am trying to install RabbitMQ (3.6.1) on linux machine Red Hat Enterprise Linux Server release 6.6. To install rabbitMQ , first I have installed Erlang R16B03 version from source (otp_src_R16B03) and followed below commands
wget http://www.erlang.org/download/otp_src_R16B03.tar.gz
tar xvfz /usr/tmp/otp_src_R16B03.tar
cd otp_src_R16B03
LANG=C; export LANG
./configure --with-ssl=/usr/bin
I get the message shown below:
*********************************************************************
********************** APPLICATIONS DISABLED **********************
*********************************************************************
crypto : OpenSSL is configured for kerberos but no krb5.h found
jinterface : No Java compiler found
odbc : ODBC library - link check failed
orber : No C++ compiler found
ssh : OpenSSL is configured for kerberos but no krb5.h found
ssl : OpenSSL is configured for kerberos but no krb5.h found
*********************************************************************
*********************************************************************
********************** APPLICATIONS INFORMATION *******************
*********************************************************************
wx : wxWidgets not found, wx will NOT be usable
*********************************************************************
though I continued with make & make install but while starting Rabbitmq server I get the following error
sbin/rabbitmq-server
Getting message
BOOT FAILED
===========
Error description:
{error,{missing_dependencies,[crypto,ssl],[mochiweb,cowlib,cowboy]}}
Log files (may contain more information):
/usr/tmp/rabbitmq_server-3.6.1/var/log/rabbitmq/rabbit.log
/usr/tmp/rabbitmq_server-3.6.1/var/log/rabbitmq/rabbit-sasl.log
Stack trace:
[{rabbit_plugins,ensure_dependencies,1,
[{file,"src/rabbit_plugins.erl"},{line,179}]},
{rabbit_plugins,prepare_plugins,1,
[{file,"src/rabbit_plugins.erl"},{line,198}]},
{rabbit,broker_start,0,[{file,"src/rabbit.erl"},{line,284}]},
{rabbit,start_it,1,[{file,"src/rabbit.erl"},{line,303}]},
{init,start_it,1,[]},
{init,start_em,1,[]}]
{"init terminating in do_boot",{error,{missing_dependencies,[crypto,ssl],[mochiweb,cowlib,cowboy]}}}
Crash dump was written to: erl_crash.dump
init terminating in do_boot ()
After exploring multiple solution I understood that I need to install latest Openssl and provide the path of newly installed openssl.
I installed Openssl from the source and installed with -fPIC
wget https://www.openssl.org/source/openssl-1.0.2.tar.gz
tar xvfz /usr/tmp/openssl-1.0.2.tar.gz
cd /usr/tmp/openssl-1.0.2
./config -fPIC
make
make install
Now new openssl is installed in bin/local/ssl location and I have reinstalled the Erlang with below configuration
export PATH="/usr/local/ssl/bin:$PATH”
export CFLAGS=-fPIC
cd /usr/tmp/otp_src_RB1603
LANG=C; export LANG
./configure --with-ssl=/usr/local/bin
make
make install
now I get the error
/usr/bin/ld: /usr/local/ssl/lib/libcrypto.a(rsaz_exp.o): relocation R_X86_64_32 against `.rodata' can not be used when making a shared object; recompile with -fPIC
/usr/local/ssl/lib/libcrypto.a: could not read symbols: Bad value**
collect2: ld returned 1 exit status
make[6]: *** [../priv/lib/x86_64-unknown-linux-gnu/crypto.so] Error 1
make[6]: Leaving directory `/var/tmp/otp_src_R16B03/lib/crypto/c_src'
make[5]: *** [release_spec] Error 2
make[5]: Leaving directory `/var/tmp/otp_src_R16B03/lib/crypto/c_src'
make[4]: *** [release] Error 2
make[4]: Leaving directory `/var/tmp/otp_src_R16B03/lib/crypto/c_src'
make[3]: *** [release] Error 2
make[3]: Leaving directory `/var/tmp/otp_src_R16B03/lib/crypto/c_src'
make[2]: *** [release] Error 2
make[2]: Leaving directory `/var/tmp/otp_src_R16B03/lib/crypto'
make[1]: *** [release] Error 2
make[1]: Leaving directory `/var/tmp/otp_src_R16B03/lib'
make: *** [install.libs] Error 2
I could not resolve this error , any suggestion.. Please note I am using accessing machine as root user
/usr/bin/ld: /usr/local/ssl/lib/libcrypto.a(rsaz_exp.o): relocation R_X86_64_32 against `.rodata' can not be used when making a shared object; recompile with -fPIC /usr/local/ssl/lib/libcrypto.a: could not read symbols: Bad value** collect2: ld returned 1 exit status
You need to build OpenSSL with the shared
option. Maybe something like the following for a 64-bit Intel machine.
wget https://www.openssl.org/source/openssl-1.1.0b.tar.gz
tar xzf openssl-1.1.0b.tar.gz
cd openssl-1.1.0b
./Configure no-ssl2 no-ssl3 shared enable-ec_nistp_64_gcc_128
...
make -j 8
...
make test
...
suod make install
enable-ec_nistp_64_gcc_128
make EC Diffie-Hellman 2x to 4x faster, but it has some limitations. You are OK to use it on a 64-bit Intel machine. Also see Compilation and Installation | Configure Options on the OpenSSL wiki.
Also, be sure to either make dclean
for OpenSSL 1.0.2 and below; or make distclean
for OpenSSL 1.1.0 and above. Otherwise, some of the old configuration lingers even after changing the option.
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With