1

I have my dotfiles install via GitHub workflows whenever I push changes. About a week ago, my CPAN installs stopped working. Here's a log sample from today:

2020-07-16T20:19:35.8952930Z 35665 DONE resolve   (0.049sec) Net::SSLeay -> Net-SSLeay-1.88 (from MetaDB)
2020-07-16T20:19:36.6764530Z 35667 DONE fetch     (0.182sec) Net-SSLeay-1.88
2020-07-16T20:19:38.7158240Z 35666 DONE configure (0.412sec) Net-SSLeay-1.88
2020-07-16T20:19:47.9208090Z 35668 FAIL install   (6.409sec) Net-SSLeay-1.88
2020-07-16T20:20:00.8129440Z FAIL install Net-SSLeay-1.88
2020-07-16T20:20:00.8407270Z 2020-07-16T20:19:35,35665,Net::SSLeay| Resolved Net::SSLeay (1.49) -> https://cpan.metacpan.org/authors/id/C/CH/CHRISN/Net-SSLeay-1.88.tar.gz from MetaDB
2020-07-16T20:20:00.8436500Z 2020-07-16T20:19:36,35667,Net-SSLeay-1.88| Fetching https://cpan.metacpan.org/authors/id/C/CH/CHRISN/Net-SSLeay-1.88.tar.gz
2020-07-16T20:20:00.8437940Z 2020-07-16T20:19:36,35667,Net-SSLeay-1.88| -> OK
2020-07-16T20:20:00.8438390Z 2020-07-16T20:19:36,35667,Net-SSLeay-1.88| Unpacking Net-SSLeay-1.88.tar.gz
2020-07-16T20:20:00.8439880Z 2020-07-16T20:19:36,35667,Net-SSLeay-1.88| Copying Net-SSLeay-1.88.tar.gz to /Users/runner/.perl-cpm/cache/authors/id/C/CH/CHRISN/Net-SSLeay-1.88.tar.gz
2020-07-16T20:20:00.8542600Z 2020-07-16T20:19:38,35666,Net-SSLeay-1.88| Configuring distribution
2020-07-16T20:20:00.8543090Z 2020-07-16T20:19:38,35666,Net-SSLeay-1.88| Executing /usr/local/Cellar/perl/5.32.0/bin/perl Makefile.PL
2020-07-16T20:20:00.8545830Z 2020-07-16T20:19:38,35666,Net-SSLeay-1.88| Do you want to run external tests?
2020-07-16T20:20:00.8546330Z 2020-07-16T20:19:38,35666,Net-SSLeay-1.88| These tests *will* *fail* if you do not have network connectivity. [n] n
2020-07-16T20:20:00.8551410Z 2020-07-16T20:19:38,35666,Net-SSLeay-1.88| *** Found LibreSSL-2.8.3 installed in /usr
2020-07-16T20:20:00.8551920Z 2020-07-16T20:19:38,35666,Net-SSLeay-1.88| *** Be sure to use the same compiler and options to compile your OpenSSL, perl,
2020-07-16T20:20:00.8552720Z 2020-07-16T20:19:38,35666,Net-SSLeay-1.88|     and Net::SSLeay. Mixing and matching compilers is not supported.
2020-07-16T20:20:00.8553350Z 2020-07-16T20:19:38,35666,Net-SSLeay-1.88| Checking if your kit is complete...
2020-07-16T20:20:00.8553860Z 2020-07-16T20:19:38,35666,Net-SSLeay-1.88| Looks good
2020-07-16T20:20:00.8555230Z 2020-07-16T20:19:38,35666,Net-SSLeay-1.88| Generating a Unix-style Makefile
2020-07-16T20:20:00.8556000Z 2020-07-16T20:19:38,35666,Net-SSLeay-1.88| Writing Makefile for Net::SSLeay
2020-07-16T20:20:00.8556470Z 2020-07-16T20:19:38,35666,Net-SSLeay-1.88| Writing MYMETA.yml and MYMETA.json
2020-07-16T20:20:00.8557920Z 2020-07-16T20:19:38,35659,Net-SSLeay-1.88| Distribution provides: Net::SSLeay (1.88), Net::SSLeay::Handle (1.88)
2020-07-16T20:20:00.8690690Z 2020-07-16T20:19:41,35668,Net-SSLeay-1.88| Building distribution
2020-07-16T20:20:00.8691150Z 2020-07-16T20:19:41,35668,Net-SSLeay-1.88| Executing /usr/bin/make
2020-07-16T20:20:00.8712850Z 2020-07-16T20:19:42,35668,Net-SSLeay-1.88| cp lib/Net/SSLeay/Handle.pm blib/lib/Net/SSLeay/Handle.pm
2020-07-16T20:20:00.8713400Z 2020-07-16T20:19:42,35668,Net-SSLeay-1.88| cp lib/Net/SSLeay.pm blib/lib/Net/SSLeay.pm
2020-07-16T20:20:00.8713900Z 2020-07-16T20:19:42,35668,Net-SSLeay-1.88| AutoSplitting blib/lib/Net/SSLeay.pm (blib/lib/auto/Net/SSLeay)
2020-07-16T20:20:00.8714410Z 2020-07-16T20:19:42,35668,Net-SSLeay-1.88| blib/lib/Net/SSLeay.pm: some names are not unique when truncated to 8 characters:
2020-07-16T20:20:00.8714870Z 2020-07-16T20:19:42,35668,Net-SSLeay-1.88|  directory blib/lib/auto/Net/SSLeay:
2020-07-16T20:20:00.8715390Z 2020-07-16T20:19:42,35668,Net-SSLeay-1.88|   do_https3.al, do_https2.al, do_https4.al, do_https.al truncate to do_https
2020-07-16T20:20:00.8715920Z 2020-07-16T20:19:42,35668,Net-SSLeay-1.88|   do_httpx3.al, do_httpx2.al, do_httpx4.al truncate to do_httpx
2020-07-16T20:20:00.8716530Z 2020-07-16T20:19:42,35668,Net-SSLeay-1.88|   get_https.al, get_https3.al, get_https4.al, get_http.al, get_http3.al, get_http4.al, get_httpx.al, get_httpx3.al, get_httpx4.al truncate to get_http
2020-07-16T20:20:00.8717250Z 2020-07-16T20:19:42,35668,Net-SSLeay-1.88|   head_https.al, head_https3.al, head_https4.al, head_http.al, head_http3.al, head_http4.al, head_httpx.al, head_httpx3.al, head_httpx4.al truncate to head_htt
2020-07-16T20:20:00.8717940Z 2020-07-16T20:19:42,35668,Net-SSLeay-1.88|   post_https.al, post_https3.al, post_https4.al, post_http.al, post_http3.al, post_http4.al, post_httpx.al, post_httpx3.al, post_httpx4.al truncate to post_htt
2020-07-16T20:20:00.8718570Z 2020-07-16T20:19:42,35668,Net-SSLeay-1.88|   put_https.al, put_https3.al, put_https4.al, put_http.al, put_http3.al, put_http4.al, put_httpx.al, put_httpx3.al, put_httpx4.al truncate to put_http
2020-07-16T20:20:00.8719110Z 2020-07-16T20:19:42,35668,Net-SSLeay-1.88|   ssl_read_all.al, ssl_read_until.al, ssl_read_CRLF.al truncate to ssl_read
2020-07-16T20:20:00.8719600Z 2020-07-16T20:19:42,35668,Net-SSLeay-1.88|   ssl_write_all.al, ssl_write_CRLF.al truncate to ssl_writ
2020-07-16T20:20:00.8720340Z 2020-07-16T20:19:42,35668,Net-SSLeay-1.88|   tcp_read_all.al, tcp_read_until.al, tcp_read_CRLF.al truncate to tcp_read
2020-07-16T20:20:00.8720830Z 2020-07-16T20:19:42,35668,Net-SSLeay-1.88|   tcp_write_all.al, tcp_write_CRLF.al truncate to tcp_writ
2020-07-16T20:20:00.8721310Z 2020-07-16T20:19:42,35668,Net-SSLeay-1.88| cp lib/Net/SSLeay.pod blib/lib/Net/SSLeay.pod
2020-07-16T20:20:00.8724940Z 2020-07-16T20:19:42,35668,Net-SSLeay-1.88| Running Mkbootstrap for SSLeay ()
2020-07-16T20:20:00.8727090Z 2020-07-16T20:19:42,35668,Net-SSLeay-1.88| chmod 644 "SSLeay.bs"
2020-07-16T20:20:00.8728840Z 2020-07-16T20:19:42,35668,Net-SSLeay-1.88| "/usr/local/Cellar/perl/5.32.0/bin/perl" -MExtUtils::Command::MM -e 'cp_nonempty' -- SSLeay.bs blib/arch/auto/Net/SSLeay/SSLeay.bs 644
2020-07-16T20:20:00.8732250Z 2020-07-16T20:19:42,35668,Net-SSLeay-1.88| "/usr/local/Cellar/perl/5.32.0/bin/perl" "/usr/local/Cellar/perl/5.32.0/lib/perl5/5.32.0/ExtUtils/xsubpp"  -typemap '/usr/local/Cellar/perl/5.32.0/lib/perl5/5.32.0/ExtUtils/typemap' -typemap '/Users/runner/.perl-cpm/work/1594930773.35659/Net-SSLeay-1.88/typemap'  SSLeay.xs > SSLeay.xsc
2020-07-16T20:20:00.8804870Z 2020-07-16T20:19:44,35668,Net-SSLeay-1.88| mv SSLeay.xsc SSLeay.c
2020-07-16T20:20:00.8806540Z 2020-07-16T20:19:44,35668,Net-SSLeay-1.88| cc -c   -fno-common -DPERL_DARWIN -mmacosx-version-min=10.15 -fno-strict-aliasing -pipe -fstack-protector-strong -I/usr/local/include -DPERL_USE_SAFE_PUTENV -O3   -DVERSION=\"1.88\" -DXS_VERSION=\"1.88\"  "-I/usr/local/Cellar/perl/5.32.0/lib/perl5/5.32.0/darwin-thread-multi-2level/CORE"   SSLeay.c
2020-07-16T20:20:00.8822350Z 2020-07-16T20:19:44,35668,Net-SSLeay-1.88| SSLeay.xs:163:10: fatal error: 'openssl/err.h' file not found
2020-07-16T20:20:00.8822820Z 2020-07-16T20:19:44,35668,Net-SSLeay-1.88| #include <openssl/err.h>
2020-07-16T20:20:00.8823270Z 2020-07-16T20:19:44,35668,Net-SSLeay-1.88|          ^~~~~~~~~~~~~~~
2020-07-16T20:20:00.8878520Z 2020-07-16T20:19:45,35668,Net-SSLeay-1.88| 1 error generated.
2020-07-16T20:20:00.8878980Z 2020-07-16T20:19:45,35668,Net-SSLeay-1.88| make: *** [SSLeay.o] Error 1
2020-07-16T20:20:00.8880890Z 2020-07-16T20:19:46,35668,Net-SSLeay-1.88| ! Retrying (you can turn off this behavior by --no-retry)
2020-07-16T20:20:00.8881370Z 2020-07-16T20:19:46,35668,Net-SSLeay-1.88| Executing /usr/bin/make
2020-07-16T20:20:00.8882270Z 2020-07-16T20:19:46,35668,Net-SSLeay-1.88| "/usr/local/Cellar/perl/5.32.0/bin/perl" -MExtUtils::Command::MM -e 'cp_nonempty' -- SSLeay.bs blib/arch/auto/Net/SSLeay/SSLeay.bs 644
2020-07-16T20:20:00.8883000Z 2020-07-16T20:19:46,35668,Net-SSLeay-1.88| cc -c   -fno-common -DPERL_DARWIN -mmacosx-version-min=10.15 -fno-strict-aliasing -pipe -fstack-protector-strong -I/usr/local/include -DPERL_USE_SAFE_PUTENV -O3   -DVERSION=\"1.88\" -DXS_VERSION=\"1.88\"  "-I/usr/local/Cellar/perl/5.32.0/lib/perl5/5.32.0/darwin-thread-multi-2level/CORE"   SSLeay.c
2020-07-16T20:20:00.8931790Z 2020-07-16T20:19:46,35668,Net-SSLeay-1.88| SSLeay.xs:163:10: fatal error: 'openssl/err.h' file not found
2020-07-16T20:20:00.8932270Z 2020-07-16T20:19:46,35668,Net-SSLeay-1.88| #include <openssl/err.h>
2020-07-16T20:20:00.8932730Z 2020-07-16T20:19:46,35668,Net-SSLeay-1.88|          ^~~~~~~~~~~~~~~
2020-07-16T20:20:00.9023370Z 2020-07-16T20:19:47,35668,Net-SSLeay-1.88| 1 error generated.
2020-07-16T20:20:00.9023990Z 2020-07-16T20:19:47,35668,Net-SSLeay-1.88| make: *** [SSLeay.o] Error 1
2020-07-16T20:20:00.9024540Z 2020-07-16T20:19:47,35668,Net-SSLeay-1.88| Failed to install distribution

Relevant bit from above: SSLeay.xs:163:10: fatal error: 'openssl/err.h' file not found

Full build is at https://github.com/oalders/dot-files/runs/879237991?check_suite_focus=true

I'm running the Perl module installs via

cpm install -g --verbose --show-build-log-on-failure --cpanfile cpan/cli.cpanfile
oalders
  • 5,239
  • 2
  • 23
  • 34
  • 2
    Looks like the same problem as described in https://stackoverflow.com/questions/60521205/how-can-i-install-netssleay-with-perlbrew-in-macos-catalina to me. To cite from [the link referenced there](https://gist.github.com/andyjack/7dd4d7b65d262b2a6e56): *"If you get a build error like 'openssl/err.h' file not found you should check that you've installed openssl with brew install openssl first. brew list openssl should list all of the files of that formula if it is installed."* – Steffen Ullrich Jul 16 '20 at 21:03
  • Thanks @SteffenUllrich I tried explicitly installing openssl via homebrew and it still fails. Earlier in the output it says "Found LibreSSL-2.8.3 installed in /usr. Be sure to use the same compiler and options to compile your OpenSSL, perl and Net::SSLeay". I wonder if that's related to the problem? – oalders Jul 16 '20 at 22:39

1 Answers1

2

I figured there's a lot of stuff that you've tried and haven't shown. For many people have this error, you need to install OpenSSL, then you need to tell Net::SSLeay where you installed OpenSSL. There's a README.OSX that explains it:

 OPENSSL_PREFIX=/path/to/openssl perl Makefile.PL

I tend to not rely on macOS's version (LibreSSL or whatever). I install my own openssl because I usually want something more recent. I don't use homebrew or other things.

brian d foy
  • 129,424
  • 31
  • 207
  • 592
  • Yes, I did try a lot of things. Thanks for this. The solution for me ended up being `brew install openssl@1.1` and `export OPENSSL_PREFIX="/usr/local/Cellar/openssl@1.1/1.1.1g"` before attempting to install the module. – oalders Jul 17 '20 at 19:31