Install Net::SSLeay on openSUSE Tumbleweed

I recently switched to openSUSE Tumbleweed from Gentoo just to play around with a different distribution.

I was attempting to install my normal set of tools, which includes Perl and Dist::Zilla.

I encountered this message when attempting to install Net::SSLeay (a dependency of Dist::Zilla):

hunter@eros:~> cpanm Dist::Zilla  
--> Working on Dist::Zilla
Fetching http://www.cpan.org/authors/id/R/RJ/RJBS/Dist-Zilla-5.043.tar.gz ... OK  
Configuring Dist-Zilla-5.043 ... OK  
==> Found dependencies: CPAN::Uploader
--> Working on CPAN::Uploader
Fetching http://www.cpan.org/authors/id/R/RJ/RJBS/CPAN-Uploader-0.103012.tar.gz ... OK  
Configuring CPAN-Uploader-0.103012 ... OK  
==> Found dependencies: LWP::Protocol::https
--> Working on LWP::Protocol::https
Fetching http://www.cpan.org/authors/id/M/MS/MSCHILLI/LWP-Protocol-https-6.06.tar.gz ... OK  
Configuring LWP-Protocol-https-6.06 ... OK  
==> Found dependencies: IO::Socket::SSL
--> Working on IO::Socket::SSL
Fetching http://www.cpan.org/authors/id/S/SU/SULLR/IO-Socket-SSL-2.024.tar.gz ... OK  
Configuring IO-Socket-SSL-2.024 ... OK  
==> Found dependencies: Net::SSLeay
--> Working on Net::SSLeay
Fetching http://www.cpan.org/authors/id/M/MI/MIKEM/Net-SSLeay-1.72.tar.gz ... OK  
Configuring Net-SSLeay-1.72 ... OK  
Building and testing Net-SSLeay-1.72 ... OK  
Successfully installed Net-SSLeay-1.72  
Building and testing IO-Socket-SSL-2.024 ... OK  
Successfully installed IO-Socket-SSL-2.024  
Building and testing LWP-Protocol-https-6.06 ... OK  
Successfully installed LWP-Protocol-https-6.06  
Building and testing CPAN-Uploader-0.103012 ... OK  
Successfully installed CPAN-Uploader-0.103012  
Building and testing Dist-Zilla-5.043 ... OK  
Successfully installed Dist-Zilla-5.043  
5 distributions installed  
hunter@eros:~/Dropbox/git> cat /home/hunter/.cpanm/work/1455930820.18014/build.log  
cpanm (App::cpanminus) 1.7040 on perl 5.023007 built for x86_64-linux  
Work directory is /home/hunter/.cpanm/work/1455930820.18014  
You have make /usr/bin/make  
You have LWP 6.15  
You have /bin/tar: tar (GNU tar) 1.28  
Copyright (C) 2014 Free Software Foundation, Inc.  
License GPLv3+: GNU GPL version 3 or later <http://gnu.org/licenses/gpl.html>.  
This is free software: you are free to change and redistribute it.  
There is NO WARRANTY, to the extent permitted by law.

Written by John Gilmore and Jay Fenlason.  
You have /usr/bin/unzip  
Searching Dist::Zilla () on cpanmetadb ...  
--> Working on Dist::Zilla
Fetching http://www.cpan.org/authors/id/R/RJ/RJBS/Dist-Zilla-5.043.tar.gz  
-> OK
Unpacking Dist-Zilla-5.043.tar.gz  
Entering Dist-Zilla-5.043  
Checking configure dependencies from META.json  
Checking if you have File::ShareDir::Install 0.06 ... Yes (0.10)  
Checking if you have ExtUtils::MakeMaker 6.58 ... Yes (7.10)  
Configuring Dist-Zilla-5.043  
Running Makefile.PL  
Warning: prerequisite CPAN::Uploader 0.103004 not found.  
Checking if your kit is complete...  
Looks good  
Generating a Unix-style Makefile  
Writing Makefile for Dist::Zilla  
Writing MYMETA.yml and MYMETA.json  
-> OK
Checking dependencies from MYMETA.json ...  
Checking if you have Config::MVP::Section 2.200009 ... Yes (2.200010)  
Checking if you have Moose::Util::TypeConstraints 0 ... Yes (2.1605)  
Checking if you have Mixin::Linewise::Readers 0.100 ... Yes (0.108)  
Checking if you have Perl::Version 0 ... Yes (1.013)  
Checking if you have Test::Deep 0 ... Yes (1.120)  
Checking if you have MooseX::LazyRequire 0 ... Yes (0.11)  
Checking if you have autodie 0 ... Yes (2.29)  
Checking if you have Path::Tiny 0.052 ... Yes (0.076)  
Checking if you have Perl::PrereqScanner 1.016 ... Yes (1.023)  
Checking if you have File::ShareDir 0 ... Yes (1.102)  
Checking if you have Config::MVP::Assembler::WithBundles 2.200010 ... Yes (2.200010)  
Checking if you have MooseX::Types::Path::Class 0 ... Yes (0.08)  
Checking if you have Config::MVP::Reader::Finder 0 ... Yes (2.200010)  
Checking if you have CPAN::Meta::Prereqs 2.120630 ... Yes (2.150005)  
Checking if you have Moose::Role 0 ... Yes (2.1605)  
Checking if you have JSON::MaybeXS 0 ... Yes (1.003005)  
Checking if you have MooseX::Types::Moose 0 ... Yes (0.46)  
Checking if you have Data::Section 0.200002 ... Yes (0.200006)  
Checking if you have Test::File::ShareDir 0 ... Yes (1.001001)  
Checking if you have List::Util 1.33 ... Yes (1.42_01)  
Checking if you have Term::ReadKey 0 ... Yes (2.33)  
Checking if you have CPAN::Meta::Validator 2.101550 ... Yes (2.150005)  
Checking if you have Config::MVP::Reader::INI 2.101461 ... Yes (2.101463)  
Checking if you have App::Cmd::Command::version 0 ... Yes (0.330)  
Checking if you have strict 0 ... Yes (1.10)  
Checking if you have Software::License 0.101370 ... Yes (0.103011)  
Checking if you have Carp 0 ... Yes (1.38)  
Checking if you have MooseX::SetOnce 0 ... Yes (0.200002)  
Checking if you have Sub::Exporter::ForMethods 0 ... Yes (0.100052)  
Checking if you have YAML::Tiny 0 ... Yes (1.69)  
Checking if you have MooseX::Types::Perl 0 ... Yes (0.101343)  
Checking if you have utf8 0 ... Yes (1.19)  
Checking if you have App::Cmd::Tester 0.306 ... Yes (0.330)  
Checking if you have Term::ReadLine 0 ... Yes (1.15)  
Checking if you have File::HomeDir 0 ... Yes (1.00)  
Checking if you have PPI::Document 0 ... Yes (1.220)  
Checking if you have Try::Tiny 0 ... Yes (0.24)  
Checking if you have List::MoreUtils 0 ... Yes (0.413)  
Checking if you have parent 0 ... Yes (0.234)  
Checking if you have String::Formatter 0.100680 ... Yes (0.102084)  
Checking if you have warnings 0 ... Yes (1.35)  
Checking if you have Test::FailWarnings 0 ... Yes (0.008)  
Checking if you have Archive::Tar 0 ... Yes (2.04)  
Checking if you have Data::Dumper 0 ... Yes (2.160)  
Checking if you have Module::CoreList 0 ... Yes (5.20160120)  
Checking if you have File::Find::Rule 0 ... Yes (0.34)  
Checking if you have File::ShareDir::Install 0.03 ... Yes (0.10)  
Checking if you have Config::INI::Reader 0 ... Yes (0.025)  
Checking if you have App::Cmd::Setup 0.330 ... Yes (0.330)  
Checking if you have Term::Encoding 0 ... Yes (0.02)  
Checking if you have MooseX::Types 0 ... Yes (0.46)  
Checking if you have Config::MVP::Reader 2.101540 ... Yes (2.200010)  
Checking if you have File::pushd 0 ... Yes (1.009)  
Checking if you have ExtUtils::Manifest 1.66 ... Yes (1.70)  
Checking if you have Sub::Exporter 0 ... Yes (0.987)  
Checking if you have File::Copy::Recursive 0 ... Yes (0.38)  
Checking if you have Text::Template 0 ... Yes (1.46)  
Checking if you have Sub::Exporter::Util 0 ... Yes (0.987)  
Checking if you have Software::License::None 0 ... Yes (0.103011)  
Checking if you have Moose 0.92 ... Yes (2.1605)  
Checking if you have CPAN::Uploader 0.103004 ... No  
Checking if you have MooseX::Role::Parameterized 1.01 ... Yes (1.08)  
Checking if you have Test::Fatal 0 ... Yes (0.014)  
Checking if you have lib 0 ... Yes (0.63)  
Checking if you have Term::UI 0 ... Yes (0.46)  
Checking if you have Encode 0 ... Yes (2.78)  
Checking if you have Software::LicenseUtils 0 ... Yes (0.103011)  
Checking if you have CPAN::Meta::Check 0.011 ... Yes (0.012)  
Checking if you have Test::More 0.96 ... Yes (1.001014)  
Checking if you have Params::Util 0 ... Yes (1.07)  
Checking if you have App::Cmd::Tester::CaptureExternal 0 ... Yes (0.330)  
Checking if you have CPAN::Meta::Converter 2.101550 ... Yes (2.150005)  
Checking if you have File::Spec 0 ... Yes (3.62)  
Checking if you have Text::Glob 0.08 ... Yes (0.09)  
Checking if you have Config::MVP::Assembler 0 ... Yes (2.200010)  
Checking if you have CPAN::Meta::Requirements 2.121 ... Yes (2.140)  
Checking if you have String::RewritePrefix 0.005 ... Yes (0.007)  
Checking if you have Path::Class 0.22 ... Yes (0.36)  
Checking if you have CPAN::Meta::Merge 0 ... Yes (2.150005)  
Checking if you have Pod::Eventual 0.091480 ... Yes (0.094001)  
Checking if you have File::Path 0 ... Yes (2.12)  
Checking if you have Class::Load 0.17 ... Yes (0.23)  
Checking if you have Scalar::Util 0 ... Yes (1.42_01)  
Checking if you have Digest::MD5 0 ... Yes (2.54)  
Checking if you have Config::MVP::Reader::Findable::ByExtension 0 ... Yes (2.200010)  
Checking if you have ExtUtils::MakeMaker 0 ... Yes (7.10)  
Checking if you have File::Temp 0 ... Yes (0.2304)  
Checking if you have version 0 ... Yes (0.9909)  
Checking if you have namespace::autoclean 0 ... Yes (0.28)  
Checking if you have DateTime 0.44 ... Yes (1.21)  
Checking if you have Log::Dispatchouli 1.102220 ... Yes (2.012)  
==> Found dependencies: CPAN::Uploader
Searching CPAN::Uploader (0.103004) on cpanmetadb ...  
--> Working on CPAN::Uploader
Fetching http://www.cpan.org/authors/id/R/RJ/RJBS/CPAN-Uploader-0.103012.tar.gz  
-> OK
Unpacking CPAN-Uploader-0.103012.tar.gz  
Entering CPAN-Uploader-0.103012  
Checking configure dependencies from META.json  
Checking if you have ExtUtils::MakeMaker 6.58 ... Yes (7.10)  
Configuring CPAN-Uploader-0.103012  
Running Makefile.PL  
Warning: prerequisite LWP::Protocol::https 1 not found.  
Checking if your kit is complete...  
Looks good  
Generating a Unix-style Makefile  
Writing Makefile for CPAN::Uploader  
Writing MYMETA.yml and MYMETA.json  
-> OK
Checking dependencies from MYMETA.json ...  
Checking if you have File::HomeDir 0 ... Yes (1.00)  
Checking if you have ExtUtils::MakeMaker 0 ... Yes (7.10)  
Checking if you have File::Basename 0 ... Yes (2.85)  
Checking if you have Digest::MD5 0 ... Yes (2.54)  
Checking if you have HTTP::Request::Common 0 ... Yes (6.11)  
Checking if you have File::Spec 0 ... Yes (3.62)  
Checking if you have warnings 0 ... Yes (1.35)  
Checking if you have Data::Dumper 0 ... Yes (2.160)  
Checking if you have Test::More 0.96 ... Yes (1.001014)  
Checking if you have LWP::UserAgent 0 ... Yes (6.15)  
Checking if you have HTTP::Status 0 ... Yes (6.11)  
Checking if you have LWP::Protocol::https 1 ... No  
Checking if you have Carp 0 ... Yes (1.38)  
Checking if you have strict 0 ... Yes (1.10)  
Checking if you have Getopt::Long::Descriptive 0.084 ... Yes (0.099)  
Checking if you have Term::ReadKey 0 ... Yes (2.33)  
==> Found dependencies: LWP::Protocol::https
Searching LWP::Protocol::https (1) on cpanmetadb ...  
--> Working on LWP::Protocol::https
Fetching http://www.cpan.org/authors/id/M/MS/MSCHILLI/LWP-Protocol-https-6.06.tar.gz  
-> OK
Unpacking LWP-Protocol-https-6.06.tar.gz  
Entering LWP-Protocol-https-6.06  
Checking configure dependencies from META.yml  
Checking if you have ExtUtils::MakeMaker 6.58 ... Yes (7.10)  
Configuring LWP-Protocol-https-6.06  
Running Makefile.PL  
Warning: prerequisite IO::Socket::SSL 1.54 not found.  
Checking if your kit is complete...  
Looks good  
Generating a Unix-style Makefile  
Writing Makefile for LWP::Protocol::https  
Writing MYMETA.yml and MYMETA.json  
-> OK
Checking dependencies from MYMETA.json ...  
Checking if you have Mozilla::CA 20110101 ... Yes (20160104)  
Checking if you have IO::Socket::SSL 1.54 ... No  
Checking if you have LWP::UserAgent 6.06 ... Yes (6.15)  
Checking if you have Net::HTTPS 6 ... Yes (6.09)  
Checking if you have ExtUtils::MakeMaker 0 ... Yes (7.10)  
==> Found dependencies: IO::Socket::SSL
Searching IO::Socket::SSL (1.54) on cpanmetadb ...  
--> Working on IO::Socket::SSL
Fetching http://www.cpan.org/authors/id/S/SU/SULLR/IO-Socket-SSL-2.024.tar.gz  
-> OK
Unpacking IO-Socket-SSL-2.024.tar.gz  
Entering IO-Socket-SSL-2.024  
Checking configure dependencies from META.json  
Checking if you have ExtUtils::MakeMaker 6.58 ... Yes (7.10)  
Configuring IO-Socket-SSL-2.024  
Running Makefile.PL  
Checking if your kit is complete...  
Looks good  
Warning: prerequisite Net::SSLeay 1.46 not found.  
Generating a Unix-style Makefile  
Writing Makefile for IO::Socket::SSL  
Writing MYMETA.yml and MYMETA.json  
-> OK
Checking dependencies from MYMETA.json ...  
Checking if you have Scalar::Util 0 ... Yes (1.42_01)  
Checking if you have Net::SSLeay 1.46 ... No  
Checking if you have ExtUtils::MakeMaker 0 ... Yes (7.10)  
Checking if you have Mozilla::CA 0 ... Yes (20160104)  
==> Found dependencies: Net::SSLeay
Searching Net::SSLeay (1.46) on cpanmetadb ...  
--> Working on Net::SSLeay
Fetching http://www.cpan.org/authors/id/M/MI/MIKEM/Net-SSLeay-1.72.tar.gz  
-> OK
Unpacking Net-SSLeay-1.72.tar.gz  
Entering Net-SSLeay-1.72  
Checking configure dependencies from META.yml  
Checking if you have ExtUtils::MakeMaker 6.58 ... Yes (7.10)  
Configuring Net-SSLeay-1.72  
Running Makefile.PL  
*** Found OpenSSL-1.0.2e installed in /usr
*** Be sure to use the same compiler and options to compile your OpenSSL, perl,
    and Net::SSLeay. Mixing and matching compilers is not supported.
Do you want to run external tests?  
These tests *will* *fail* if you do not have network connectivity. [n] n  
Checking if your kit is complete...  
Looks good  
Generating a Unix-style Makefile  
Writing Makefile for Net::SSLeay  
Writing MYMETA.yml and MYMETA.json  
-> OK
Checking dependencies from MYMETA.json ...  
Checking if you have ExtUtils::MakeMaker 0 ... Yes (7.10)  
Checking if you have MIME::Base64 0 ... Yes (3.15)  
Checking if you have Test::More 0.60_01 ... Yes (1.001014)  
Building and testing Net-SSLeay-1.72  
cp lib/Net/SSLeay.pod blib/lib/Net/SSLeay.pod  
cp lib/Net/SSLeay/Handle.pm blib/lib/Net/SSLeay/Handle.pm  
cp lib/Net/SSLeay.pm blib/lib/Net/SSLeay.pm  
AutoSplitting blib/lib/Net/SSLeay.pm (blib/lib/auto/Net/SSLeay)  
blib/lib/Net/SSLeay.pm: some names are not unique when truncated to 8 characters:  
 directory blib/lib/auto/Net/SSLeay:
  do_https3.al, do_https2.al, do_https4.al, do_https.al truncate to do_https
  do_httpx3.al, do_httpx2.al, do_httpx4.al truncate to do_httpx
  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
  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
  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
  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
  ssl_read_all.al, ssl_read_until.al, ssl_read_CRLF.al truncate to ssl_read
  ssl_write_all.al, ssl_write_CRLF.al truncate to ssl_writ
  tcp_read_all.al, tcp_read_until.al, tcp_read_CRLF.al truncate to tcp_read
  tcp_write_all.al, tcp_write_CRLF.al truncate to tcp_writ
Running Mkbootstrap for Net::SSLeay ()  
chmod 644 "SSLeay.bs"  
"/home/hunter/perl5/perlbrew/perls/perl-5.23.7/bin/perl5.23.7" "-Iinc" "/home/hunter/perl5/perlbrew/perls/perl-5.23.7/lib/5.23.7/ExtUtils/xsubpp"  -typemap "/home/hunter/perl5/perlbrew/perls/perl-5.23.7/lib/5.23.7/ExtUtils/typemap" -typemap "typemap"  SSLeay.xs > SSLeay.xsc && mv SSLeay.xsc SSLeay.c
cc -c   -fwrapv -fno-strict-aliasing -pipe -fstack-protector-strong -I/usr/local/include -D_LARGEFILE_SOURCE -D_FILE_OFFSET_BITS=64 -D_FORTIFY_SOURCE=2 -O2   -DVERSION=\"1.72\" -DXS_VERSION=\"1.72\" -fPIC "-I/home/hunter/perl5/perlbrew/perls/perl-5.23.7/lib/5.23.7/x86_64-linux/CORE"   SSLeay.c  
SSLeay.xs:163:25: fatal error: openssl/err.h: No such file or directory  
compilation terminated.  
Makefile:359: recipe for target 'SSLeay.o' failed  
make: *** [SSLeay.o] Error 1  
-> FAIL Installing Net::SSLeay failed. See /home/hunter/.cpanm/work/1455930820.18014/build.log for details. Retry with --force to force install it.
-> FAIL Installing the dependencies failed: Module 'Net::SSLeay' is not installed
-> FAIL Bailing out the installation for IO-Socket-SSL-2.024.
-> FAIL Installing the dependencies failed: Module 'IO::Socket::SSL' is not installed
-> FAIL Bailing out the installation for LWP-Protocol-https-6.06.
-> FAIL Installing the dependencies failed: Module 'LWP::Protocol::https' is not installed
-> FAIL Bailing out the installation for CPAN-Uploader-0.103012.
-> FAIL Installing the dependencies failed: Module 'CPAN::Uploader' is not installed
-> FAIL Bailing out the installation for Dist-Zilla-5.043.

The important part is:

SSLeay.xs:163:25: fatal error: openssl/err.h: No such file or directory  
compilation terminated.  
Makefile:359: recipe for target 'SSLeay.o' failed  
make: *** [SSLeay.o] Error 1  

This error message led me to this bug report on RT: https://rt.cpan.org/Public/Bug/Display.html?id=105189

Which led me to install libopenssl-devel:

sudo zypper in libopenssl-devel  

After this Dist::Zilla installed without issue.