Raspberry PiでPerlのNet::SMTPSモジュールをインストールしようとしたところ、次のエラーが出て終了してしまう。
t/mitm.t ................... ok
t/nonblock.t ............... Failed 2/27 subtests
t/npn.t .................... ok
これは、依存関係から自動インストールされるIO::Socket::SSLのコンパイルエラー。
ネットを検索すると、『 [SOLVED] Building package "perl-IO-Socket-SSL" from SBo fails on RasPi 』 が全く同じ現象を解決した記事になっている。
まず、meta cpanのIO::Socket::SSLから、モジュールのソースコードをダウンロードして展開する。
展開したディレクトリでシェルに入り
sed -e '0,/^use/s//print "1..0 # Skipped: no support for nonblocking sockets\\n";\nexit;\nuse/' -i t/nonblock.t
この処理で、ファイルが1個書き換わる。赤字の部分が追記された部分。
t/nonblock.t
#!perl
# Before `make install' is performed this script should be runnable with
# `make test'. After `make install' it should work as `perl t/nonblock.t'
print "1..0 # Skipped: no support for nonblocking sockets\n";
exit;
use strict;
use warnings;
use Net::SSLeay;
use Socket;
use IO::Socket::SSL;
use IO::Select;
use Errno qw( EWOULDBLOCK EAGAIN EINPROGRESS EPIPE ECONNRESET );
do './testlib.pl' || do './t/testlib.pl' || die "no testlib";
if ( ! eval "use 5.006; use IO::Select; return 1" ) {
print "1..0 # Skipped: no support for nonblocking sockets\n";
exit;
}
そして、モジュールを手動でコンパイルしてインストールする
perl Makefile.PL INSTALLDIRS=perl make make test sudo make install