dmwm / PHEDEX

CMS data-placement suite
8 stars 18 forks source link

Add proper dependency on SSL client library #1065

Open nikmagini opened 7 years ago

nikmagini commented 7 years ago

The 'phedex' CLI, the Lifecycle and Spacemon (through PHEDEX::CLI::UserAgent and PHEDEX::Testbed::Lifecycle::Datasvc) depend on the Net::SSL module which is distributed with the perl-Crypt-SSLeay rpm

But this rpm is not included as dependency of the PHEDEX rpm so it needs to be installed by hand on the system as root. In addition the tools fail with an obscure error if the rpm is not installed.

We should consider adding a spec file for perl-Crypt-SSLeay in the externals and add it as dependency in the PHEDEX spec file.

nataliaratnikova commented 7 years ago

Just a quick update on the versions:

nataliaratnikova commented 7 years ago

For the record, current dependencies are :

-bash-4.1$ rpm -q --requires  perl-Crypt-SSLeay
/etc/pki/tls/certs/ca-bundle.crt  
libc.so.6()(64bit)  
libc.so.6(GLIBC_2.2.5)(64bit)  
libc.so.6(GLIBC_2.3.4)(64bit)  
libc.so.6(GLIBC_2.4)(64bit)  
libcrypto.so.10()(64bit)  
libcrypto.so.10(libcrypto.so.10)(64bit)  
libssl.so.10()(64bit)  
libssl.so.10(libssl.so.10)(64bit)  
perl(:MODULE_COMPAT_5.10.1)  
perl(Carp)  
perl(Crypt::SSLeay)  
perl(Crypt::SSLeay::CTX)  
perl(Crypt::SSLeay::X509)  
perl(IO::Socket)  
perl(MIME::Base64)  
perl(Socket)  
perl(strict)  
perl(vars)  
rpmlib(CompressedFileNames) <= 3.0.4-1
rpmlib(FileDigests) <= 4.6.0-1
rpmlib(PayloadFilesHavePrefix) <= 4.0-1
rpmlib(VersionedDependencies) <= 3.0.3-1
rtld(GNU_HASH)  
rpmlib(PayloadIsXz) <= 5.2-1
-bash-4.1$ rpm -q --provides  perl-Crypt-SSLeay
SSLeay.so()(64bit)  
perl(Crypt::SSLeay) = 0.57
perl(Crypt::SSLeay::CTX)  
perl(Crypt::SSLeay::Conn)  
perl(Crypt::SSLeay::Err)  
perl(Crypt::SSLeay::MainContext)  
perl(Crypt::SSLeay::X509)  
perl(Net::SSL) = 2.84
perl-Crypt-SSLeay = 0.57-17.el6
perl-Crypt-SSLeay(x86-64) = 0.57-17.el6
-bash-4.1$
nataliaratnikova commented 7 years ago

The installation is not that straightforward, as Crypt-SSLeay build requires openssl C header files, as explained in the README coming with the source:

OpenSSL
    You must have OpenSSL or SSLeay installed before compiling this module.
    You can get the latest OpenSSL package from:

      http://www.openssl.org

    On Debian systems, you will need to install the libssl-dev package,
    at least for the duration of the build (it may be removed afterwards).

    Other package-based systems may require something similar. The key is
    that Crypt::SSLeay makes calls to the OpenSSL library, and how to do
    so is specified in the C header files that come with the library.
    Some systems break out the header files into a separate package from
    that of the libraries. Once the program has been built, you don't
    need the headers any more.

Otherwise it fails with:

-bash-4.1$ PERL_MM_USE_DEFAULT=1 perl ./Makefile.PL 
========================================================================
No installed SSL libraries found in any of the following places.
    /local
    /local/ssl
    /opt/ssl
    /usr
    /usr/local
    /usr/local/ssl
    /usr/local/openssl
You will have to either specify a directory location at the following
prompt, or rerun the Makefile.PL program and use the --lib switch
to specify the path. If the path in question is considered standard
on your platform, please consider filing a bug report in order to
have it taken into account in a subsequent version of Crypt::SSLeay.

Which SSL install path do you want to use?  
 does not appear to be an SSL library installation, since
the required header files were not found. The build cannot proceed.
nataliaratnikova commented 6 years ago

Added dependency on openssl. This version builds properly and tested with spacemon-client on a testbed with a system perl-Crypt-SSLeay uninstalled: https://github.com/nataliaratnikova/cmsdist/commit/e06304f2a7f358037574ae0b5a536f2f7f2660ca