Net::SSLeay 1.32 Perl Module Bad Compile - Work around

skelly

Registered
Aug 1, 2006
2
0
151
I noticed after my upgrade to WHM 11 that a couple of Perl modules were stubbornly refusing to compile/install. One of the problems was the compilation of Net::SSLeay 1.32 failing to compile because of a bad path in the make command.

Below is the original problem output:

Code:
  CPAN.pm: Going to build F/FL/FLORA/Net-SSLeay-1.32.tar.gz

Cannot determine perl version info from lib/Net/SSLeay.pm
Cannot determine license info from lib/Net/SSLeay.pm
*** Found OpenSSL-0.9.7a installed in /usr/local/ssl
*** Be sure to use the same compiler and options to compile your OpenSSL, perl,
    and Net::SSLeay. Mixing and matching compilers is not supported.
*** Enabling gcc -fPIC optimization
Do you want to run external tests?
These tests *will* *fail* if you do not have network connectivity. [y] 
*** Module::AutoInstall version 1.03
*** Checking for Perl dependencies...
[Core Features]
- Sub::Uplevel    ...loaded. (0.16)
- Test::Exception ...loaded. (0.25)
- Array::Compare  ...loaded. (1.14)
- Tree::DAG_Node  ...loaded. (1.05)
- Test::Warn      ...loaded. (0.10)
- MIME::Base64    ...loaded. (3.07)
*** Module::AutoInstall configuration finished.
Checking if your kit is complete...
Looks good
Writing Makefile for Net::SSLeay
CPAN: YAML loaded ok (v0.65)
cp lib/Net/SSLeay.pm blib/lib/Net/SSLeay.pm
AutoSplitting blib/lib/Net/SSLeay.pm (blib/lib/auto/Net/SSLeay)
blib/lib/Net/SSLeay.pm: some names are not unique when truncated to 8 characters:
 directory blib/lib/auto/Net/SSLeay:
  do_https3.al, do_https2.al, do_https4.al, do_https.al truncate to do_https
  do_httpx3.al, do_httpx2.al, do_httpx4.al truncate to do_httpx
  get_https.al, get_https3.al, get_https4.al, get_http.al, get_http3.al, get_http4.al, get_httpx.al, get_httpx3.al, get_httpx4.al truncate to get_http
  head_https.al, head_https3.al, head_https4.al, head_http.al, head_http3.al, head_http4.al, head_httpx.al, head_httpx3.al, head_httpx4.al truncate to head_htt
  post_https.al, post_https3.al, post_https4.al, post_http.al, post_http3.al, post_http4.al, post_httpx.al, post_httpx3.al, post_httpx4.al truncate to post_htt
  put_https.al, put_https3.al, put_https4.al, put_http.al, put_http3.al, put_http4.al, put_httpx.al, put_httpx3.al, put_httpx4.al truncate to put_http
  ssl_read_all.al, ssl_read_until.al, ssl_read_CRLF.al truncate to ssl_read
  ssl_write_all.al, ssl_write_CRLF.al truncate to ssl_writ
  tcp_read_all.al, tcp_read_until.al, tcp_read_CRLF.al truncate to tcp_read
  tcp_write_all.al, tcp_write_CRLF.al truncate to tcp_writ
cp lib/Net/SSLeay/Handle.pm blib/lib/Net/SSLeay/Handle.pm
/usr/bin/perl "-Iinc" /usr/lib/perl5/5.8.8/ExtUtils/xsubpp  -typemap /usr/lib/perl5/5.8.8/ExtUtils/typemap -typemap typemap  SSLeay.xs > SSLeay.xsc && mv SSLeay.xsc SSLeay.c
cc -c  -I/usr/local/ssl/include -I/usr/local/ssl/inc32 -Iusr/kerberos/include -fno-strict-aliasing -pipe -Wdeclaration-after-statement -I/usr/local/include -D_LARGEFILE_SOURCE -D_FILE_OFFSET_BITS=64 -I/usr/include/gdbm -O2 -g   -DVERSION=\"1.32\" -DXS_VERSION=\"1.32\" -fPIC "-I/usr/lib/perl5/5.8.8/i686-linux/CORE"   SSLeay.c
In file included from /usr/include/openssl/ssl.h:179,
                 from SSLeay.xs:96:
/usr/include/openssl/kssl.h:72:18: krb5.h: No such file or directory
In file included from /usr/include/openssl/ssl.h:179,
                 from SSLeay.xs:96:
/usr/include/openssl/kssl.h:134: syntax error before "krb5_enctype"
/usr/include/openssl/kssl.h:136: syntax error before '*' token
/usr/include/openssl/kssl.h:137: syntax error before '}' token
/usr/include/openssl/kssl.h:149: syntax error before "kssl_ctx_setstring"
/usr/include/openssl/kssl.h:149: syntax error before '*' token
Notice the -Iusr/kerberos/include flag on the compile line? It's missing a slash (should be -I/usr/kerberos/include).

I worked around this by temporarily creating symlinks to the kerberos includes from an include directory that was being correctly specified. I used "/usr/local/include" thusly:

Code:
[email protected] [/]# cd /usr/local/include/
[email protected] [/usr/local/include]# ll
total 7
drwxr-xr-x    6 root     root         1024 Apr  4 15:00 ./
drwxr-xr-x   22 root     root         1024 Apr  4 14:57 ../
drwxr-xr-x    2 root     root         1024 Apr  4 17:35 neon/
drwxr-xr-x    8 root     root         1024 Aug 27 18:45 php/
drwxr-xr-x    2 root     root         2048 Jul  5  2006 python2.4/
drwxr-xr-x    2 root     root         1024 Apr  4 17:35 subversion-1/
[email protected] [/usr/local/include]# ln -s /usr/kerberos/include/* .
[email protected] [/usr/local/include]# ll
total 16
drwxr-xr-x    6 root     root         1024 Sep  4 15:01 ./
drwxr-xr-x   22 root     root         1024 Apr  4 14:57 ../
lrwxrwxrwx    1 root     root           27 Sep  4 15:01 asn.1 -> /usr/kerberos/include/asn.1/
lrwxrwxrwx    1 root     root           31 Sep  4 15:01 com_err.h -> /usr/kerberos/include/com_err.h
lrwxrwxrwx    1 root     root           28 Sep  4 15:01 gssapi -> /usr/kerberos/include/gssapi/
lrwxrwxrwx    1 root     root           32 Sep  4 15:01 kerberosIV -> /usr/kerberos/include/kerberosIV/
lrwxrwxrwx    1 root     root           28 Sep  4 15:01 krb5.h -> /usr/kerberos/include/krb5.h
lrwxrwxrwx    1 root     root           30 Sep  4 15:01 libpty.h -> /usr/kerberos/include/libpty.h
lrwxrwxrwx    1 root     root           42 Sep  4 15:01 mit-sipb-copyright.h -> /usr/kerberos/include/mit-sipb-copyright.h
drwxr-xr-x    2 root     root         1024 Apr  4 17:35 neon/
drwxr-xr-x    8 root     root         1024 Aug 27 18:45 php/
lrwxrwxrwx    1 root     root           36 Sep  4 15:01 port-sockets.h -> /usr/kerberos/include/port-sockets.h
lrwxrwxrwx    1 root     root           31 Sep  4 15:01 profile.h -> /usr/kerberos/include/profile.h
drwxr-xr-x    2 root     root         2048 Jul  5  2006 python2.4/
drwxr-xr-x    2 root     root         1024 Apr  4 17:35 subversion-1/
And then re performed "/usr/local/cpanel/bin/checkperlmodules" which then succeeded.

I then removed the temporary symlinks.

Maybe someone who knows more about how these updates work can fathom how to fix the distro package.

Hope that helps someone else - I could find no specific thread to post too.