HTTP::Tinyで httpsアクセスで 599が返るようになった問題の修正
某モジュールのメンテンスでテストに必要なモジュールを入れようとしたらそもそもエラーが出るということで, エラー原因を調べてみたところ下記のようなエラーが出ていた。HTTP::Tiny
を使った httpsへの GETが軒並み失敗していることが原因であった。
$VAR1 = { 'headers' => { 'content-type' => 'text/plain', 'content-length' => 110 }, 'success' => '', 'url' => 'https://fastapi.metacpan.org/author/XSAWYERX', 'status' => 599, 'content' => 'IO::Socket::SSL 1.42 must be installed for https support Net::SSLeay 1.49 must be installed for https support ', 'reason' => 'Internal Exception' };
IO::Socket::SSL
も Net::SSLeay
も最新バージョンが入っているのになんでだろと思って以下のコードを実行したところ, 次のようなエラーが出てすぐに問題が特定できた. Ubuntuをアップデートしたところ OpenSSLのバージョンが更新されメジャーバージョンも変わってしまったために再コンパイルが必要になっていただけであった.
use IO::Socket::SSL;
Can't load '/home/syohei/.plenv/versions/5.34.1/lib/perl5/site_perl/5.34.1/x86_64-linux-thread-multi/auto/Net/SSLeay/SSLeay.so' for module Net::SSLeay: libssl.so.1.1: cannot open shared object file: No such file or directory at /home/syohei/.plenv/versions/5.34.1/lib/perl5/5.34.1/x86_64-linux-thread-multi/DynaLoader.pm line 193. at /home/syohei/.plenv/versions/5.34.1/lib/perl5/site_perl/5.34.1/IO/Socket/SSL.pm line 19. Compilation failed in require at /home/syohei/.plenv/versions/5.34.1/lib/perl5/site_perl/5.34.1/IO/Socket/SSL.pm line 19. BEGIN failed--compilation aborted at /home/syohei/.plenv/versions/5.34.1/lib/perl5/site_perl/5.34.1/IO/Socket/SSL.pm line 19. Compilation failed in require at a.pl line 2. BEGIN failed--compilation aborted at a.pl line 2.
再インストールしたら問題が解消した
cpanm --reinstall Net::SSLeay