Perl Net::SSLeay でBuilding and testing Net-SSLeay-1.85 … FAILになるエラー

Perl Languageのイラスト

SSLは現在は必ず必要なモジュールでありながらPerlのSSLはインストールの時点ですでに困難な状態のまま、もう過去の言語になっているので更新も止まっていることが多いのです。とりあえずインストールできた、という状態になるまでのメモを残しておきます。

最初に打ってみるコマンド

cpan >install Net::SSLeay

cpanm Net::SSLeay

とりあえずインストール。失敗するのですがエラーを読むために実行すること。

エラーログを読む

SSLeay.oのエラーが出る。

opensslのパスの指定がおかしい。

build.logを読め、と出てきたから読む。

tail /Users/<home>/.cpanm/work/1528971847.25299/build.log

環境によって内容は違う場合があるが12個のエラー。

opensslの場所を調べる

# which openssl

/usr/local/Cellar/openssl/1.0.2o_1/bin/openssl

Macに最初から入っているopensslだと、

/usr/local/opt/openssl

にopensslが入っていて、brewから最新のopensslをインストールしても使うのが古いほうになってしまうのでまずは最新のを使うように変更する。

# echo ~/.bash_profile  #内にパスを指定する。

echoの出力結果

export PATH=/usr/local/Cellar/openssl/1.0.2o_1/bin:$PATH
export LD_LIBRARY_PATH=/usr/local/Cellar/openssl/1.0.2o_1/lib:$LD_LIBRARY_PATH
export CPATH=/usr/local/Cellar/openssl/1.0.2o_1/include:$CPATH
export LDFLAGS=-L/usr/local/Cellar/openssl/1.0.2o_1/lib
export CPPFLAGS=-I/usr/local/Cellar/openssl/1.0.2o_1/include
export PKG_CONFIG_PATH=/usr/local/Cellar/openssl/1.0.2o_1/pkgconfig:$PKG_CONFIG_PATH

Macのbrewで入れたのならパスは/usr/local/Cellarにある。あるかどうかは自身で確認してからパスの指定をすること。バージョンが上がると微妙に変わってることがあります。

# source ~/.bash_profile

パスを書いたら.bash_profileを再読み込み。

opensslのパスをexport

export LIBRARY_PATH=/usr/local/opt/openssl/lib

export CPATH=/usr/local/opt/openssl/include

正直.bash_profileに入れてるから意味があったかはわからない。

cpanからインストールの場合opensslのパスを指定

# o conf makepl_arg “INSTALLDIRS=site LIBS=’-L/usr/local/opt/openssl/lib -lcrypto -lssl’ INC=-I/usr/local/opt/openssl/include”

# o conf commit

Net-SSLeayをソースからコンパイルしてみる

~/.cpan/build 以下にcpan、cpanmでダウンロードされた.tar.gzファイルがあるので、それを展開してmake installを試してみます。

# sudo perl Makefile.PL –incpath /usr/local/Cellar/openssl/1.0.2o_1/include/openssl –libpath /usr/local/Cellar/openssl/1.0.2o_1/lib

# make

# make test

# sudo make install

Makefile.PLはそのまま実行すると古いほうの/usr/local/opt/opensslを読み込むのでパスを指定してやります。

それでも、sudo perl Makefile.PL をした際に~/.bash_profileに書いたパスを読み込まず古い方のopensslを読み込む場合、Macを再起動してみると~/.bash_profileを読み込む場合があります。

opensslのソースコードからREADMEを読む

https://www.openssl.org

配布先はgithubなので

# git clone https://github.com/openssl/openssl

ネット検索でやり方を探してもそれが間違っていることが多々あります。とりあえず配布元が作ったREADMEを読むのがいいことがあります。

NOTES.PERL

NOTES.UNIX

このあたりMacはUnixが元なのでNOTES.UNIXでほぼ問題ないです。

NOTES.PERLの内容

# cpanm Test::More

# cpanm Text::Template

この二つをインストールって書いてあります。とりあえずインストールしておきます。

NOTES.UNIXの内容は./Configureのやり方が載ってました、brewからインストール済みなので、ソースコードからインストールを試みる場合役に立ちそうです。

Net-SSLeayのソースコードからREADMEを読む

~/.cpan/build/Net-SSLeay-1.85 内に README.OSX が入ってる。

それを参考に通常インストールと、opensslでエラーがでた場合のインストール方法が載っていて、どちらもソースコードからのインストールを想定しています。

plenvで使用中のバージョンを確認する

plenvは作業ディレクトリごとにバージョンが指定できます。

~/.cpan/build/Net-SSLeay-1.85内でsystemデフォルトのPerlを使用していても実行した.plファイルがあるディレクトリに移動したらPerl 5.8.6に変わっていてインストール失敗、になっている場合がありました。

# perl -v

でディレクトリごとのバージョンを確認しておく。

# ~/.cpan/build/Net-SSLeay-1.85内でインストールがうまくいった場合、そっちを使う。

# plenv local system

まとめ

Perlのような古い言語だとこうすれば必ず動く、みたいな現代版ものとは違い、環境ごとに吐くエラーも違ったり自力でなんとかする、ネット検索に出てくるやり方はヒントにはなってもそのままうまく行くほうが稀だったりします。

この記事も完全に順番通りやれば動く、というものではなくヒントとしての利用が望ましいと考えて書きました。

コメントを残す

メールアドレスが公開されることはありません。 が付いている欄は必須項目です