sironekotoroの日記

Perl で楽をしたい

macOS Monterey で IO::Socket::SSL, Net::SSLeay のインストールに失敗する

何度目かの環境再構築中

色々あって、業務で利用している Macbook Pro 2017 をリカバリすることにしました。

ディスクユーティリティで SSD を一旦まっさらに。

そこに macOS Monterey をネットワーク経由でクリーンインストール

ちょうど経理の月初作業も終わり、お盆休みもあったので落ち着いて環境構築を進めることができました。

自作モジュールのインストールでエラー

この自作モジュールは業務を楽にするために自分で作ったもので、以下のような動きをします。

  1. Google Sheet を csv にしてダウンロード
  2. ダウンロードした csv から数値を抜き出す
  3. 抜き出した数字に応じて画像生成

この "Google Sheet を csv にしてダウンロード" の時に(透過的に)利用するモジュールが IO::Socket::SSL です。 文字通り、SSL通信に関係するモジュールです。

これのインストールに失敗しました。

$ cpanm IO::Socket::SSL
--> Working on IO::Socket::SSL
Fetching http://www.cpan.org/authors/id/S/SU/SULLR/IO-Socket-SSL-2.074.tar.gz ... OK
==> Found dependencies: Net::SSLeay
--> Working on Net::SSLeay
Fetching http://www.cpan.org/authors/id/C/CH/CHRISN/Net-SSLeay-1.92.tar.gz ... OK
Configuring Net-SSLeay-1.92 ... N/A
! Configure failed for Net-SSLeay-1.92. See /Users/sironekotoro/.cpanm/work/1660879857.14507/build.log for details.
! Installing the dependencies failed: Module 'Net::SSLeay' is not installed
! Bailing out the installation for IO-Socket-SSL-2.074.

IO::Socket::SSL が依存している Net::SSLeay のインストールに失敗してるようです。 ログはここに出力されているので確認。

! Configure failed for Net-SSLeay-1.92. See /Users/sironekotoro/.cpanm/work/1660879857.14507/build.log for details.

失敗時のログはこんな感じ。

cpanm (App::cpanminus) 1.7046 on perl 5.036000 built for darwin-2level
Work directory is /Users/sironekotoro/.cpanm/work/1660879879.14561
You have make /usr/bin/make
You have /usr/local/bin/wget
You have /usr/bin/tar: bsdtar 3.5.1 - libarchive 3.5.1 zlib/1.2.11 liblzma/5.0.5 bz2lib/1.0.8 
You have /usr/bin/unzip
Searching Net::SSLeay () on cpanmetadb ...
--> Working on Net::SSLeay
Fetching http://www.cpan.org/authors/id/C/CH/CHRISN/Net-SSLeay-1.92.tar.gz
-> OK
Unpacking Net-SSLeay-1.92.tar.gz
Entering Net-SSLeay-1.92
Checking configure dependencies from META.json
Checking if you have ExtUtils::MakeMaker 6.58 ... Yes (7.64)
Checking if you have English 0 ... Yes (1.11)
Checking if you have constant 0 ... Yes (1.33)
Checking if you have File::Spec::Functions 0 ... Yes (3.84)
Checking if you have Text::Wrap 0 ... Yes (2021.0814)
Configuring Net-SSLeay-1.92
Running Makefile.PL
Do you want to run external tests?
These tests *will* *fail* if you do not have network connectivity. [n] n
*** Be sure to use the same compiler and options to compile your OpenSSL, perl,
    and Net::SSLeay. Mixing and matching compilers is not supported.

******************************************************************************
* COULD NOT FIND LIBSSL HEADERS                                              *
*                                                                            *
* The libssl header files are required to build Net-SSLeay, but they are     *
* missing from /usr. They would typically reside in /usr/include/openssl.    *
******************************************************************************
-> N/A
-> FAIL Configure failed for Net-SSLeay-1.92. See /Users/sironekotoro/.cpanm/work/1660879879.14561/build.log for details.

まぁ、原因はわかっていて。

macOS Monterey が採用している SSL のライブラリは LibraSSL というものです。

$ openssl version
LibreSSL 2.8.3

対して、IO::Socket::SSL が要求しているのは OpenSSL というライブラリです。

エラーログのここですね。

******************************************************************************
* COULD NOT FIND LIBSSL HEADERS                                              *
*                                                                            *
* The libssl header files are required to build Net-SSLeay, but they are     *
* missing from /usr. They would typically reside in /usr/include/openssl.    *

ということで、macでお馴染みのパッケージマネージャ Homebrew で openSSL をインストールします。

$ brew install openssl

openSSL のインストール後、無事 IO::Socket::SSL のインストールが完了。

めでたしめでたし。

なぜこれを書いたのか

何度目かのインストールで毎回やってるなぁ・・・と思ったのと、割と MacPerl やってて引っかかりやすいところかなぁ、と思ったので。