xcodejoy
xcodejoy

Reputation: 50

What is the right way to install IO::Socket::SSL using Carton and custom LibreSSL/OpenSSL

Perl framework Mojolicious uses optional module IO::Socket::SSL for secured connections.

Mojolicious and IO::Socket::SSL must be installed using Carton (cpanfile contains dependencies list).
In order to use IO::Socket::SSL I need to have Net::SSLeay installed.
Net::SSLeay requires LibreSSL or OpenSSL installed.

On developer's server, a determined Perl project must use a determined LibreSSL/OpenSSL version:

$HOME/opt/LibreSSL/v1
$HOME/opt/LibreSSL/v...
$HOME/opt/OpenSSL/v1
$HOME/opt/OpenSSL/v...

My solution is to change $PATH system variable (for local custom LibreSSL/OpenSSL) before:

- execution "carton install" command
- running of a Perl project for testing

Is it right way?

Upvotes: 1

Views: 2072

Answers (1)

Grinnz
Grinnz

Reputation: 9231

Determining what instance of OpenSSL to link against is done by Net::SSLeay during its installation (IO::Socket::SSL is just an interface to that module). It explains in its README:

    If your OpenSSL is installed in an unusual place, you can tell
    Net-SSLeay where to find it with the OPENSSL_PREFIX environment
    variable:
    OPENSSL_PREFIX=/home/mikem/playpen/openssl-1.0.2c perl Makefile.PL

Once installed, this no longer needs to be indicated to the respective Perl projects using that module.

Upvotes: 2

Related Questions