inman has asked for the wisdom of the Perl Monks concerning the following question:

I am working in a corporate environment where production servers are not allowed to have C compiler installed. I need to install Crypt::SSLeay for LWP SSL support.

I am using a version of Crypt::SSLeay that was built on a Solaris 9 development server with OpenSSL 0.9.7e installed. This dev server has gcc and a Perl distribution from Sun. I have moved the built modules and libraries to the production server which is a Solaris 8 server with OpenSSL 0.9.7c installed and an ActiveState Perl 5.8.7 distribution.

When I try and load the module using perl -MCrypt::SSLeay I get:

Can't load '/opt/support/verity/iscripts/lib/auto/Crypt/SSLeay/SSLeay. +so' for module Crypt::SSLeay: ld.so.1: perl: fatal: relocation error: + file /opt/support/verity/iscripts/lib/auto/Crypt/SSLeay/SSLeay.so: s +ymbol PL_markstack_ptr: referenced symbol not found at /opt/ActivePer +l-5.8/lib/5.8.7/sun4-solaris-thread-multi/DynaLoader.pm line 230. at - line 0 Compilation failed in require. BEGIN failed--compilation aborted.

I suspect that this indicates a binary incompatibility, the source of which could be any of the components that are different. My choices with respect to fixing the problem appear to be :

  1. Upgrade the OpenSSL version.
  2. Match the Perl installations.
  3. Install gcc and rebuild the module. I can then save the built files and have the server re-built.

Can anyone comment on the problem and suggest solutions?

Replies are listed 'Best First'.
Re: Crypt::SSLeay binary version problem on Solaris
by idsfa (Vicar) on Jul 21, 2005 at 17:21 UTC
    1. Fix your environment so that development matches (testing and) production.

    Actually, this is the only option that will fix the problem. The others are just band-aids on a broken bone.


    The intelligent reader will judge for himself. Without examining the facts fully and fairly, there is no way of knowing whether vox populi is really vox dei, or merely vox asinorum. -- Cyrus H. Gordon
Re: Crypt::SSLeay binary version problem on Solaris
by radiantmatrix (Parson) on Jul 21, 2005 at 20:18 UTC

    Yeah, you could upgrade the prod. servers' OpenSSL version. Or, you could downgrade your local OpenSSL version to match production and rebuild. Which option depends on your environment, and whether there's a good reason to patch the prod. server.

    I suspect the latter option will be the fastest.

    <-radiant.matrix->
    Larry Wall is Yoda: there is no try{} (ok, except in Perl6; way to ruin a joke, Larry! ;P)
    The Code that can be seen is not the true Code
    "In any sufficiently large group of people, most are idiots" - Kaa's Law