Perl

IO::Socket::SSL“記憶體不足”安裝錯誤

  • March 1, 2021

我想在 Solaris 10 機器上安裝 OcsInventory Unix Agent 2.8。在目錄中執行perl Makefile.PL命令時,它會列出代理正常工作所需的模組,例如

Please install Net::SSLeay if you want to use the software deployment.  
Please install nmap if you want to use the network discover feature.  
Warning: prerequisite IO::Socket::SSL 0 not found.  
Generating a Unix-style Makefile  
Writing Makefile for Ocsinventory::Unix::Agent  
Writing MYMETA.yml and MYMETA.json

所以我的工作是解決這些依賴關係並使其發揮作用。IO::Socket::SSL我在從 metacpan.org 下載該軟體包後嘗試安裝該軟體包,但該perl Makefile.PL命令只是拋出*記憶體不足!*錯誤。還嘗試從 CPAN-shell 安裝它,但遇到了與以前版本的軟體包相同的錯誤。電腦有 8GB 記憶體,所以它不應該是問題的根源……你能給出任何建議如何從這裡繼續嗎?

感謝Steffen Ullrich,我能夠解決這個問題。不完美,但它有效。錯誤資訊

Can't load '/usr/perl5/site_perl/5.8.4/sun4-solaris-64int/auto/Net/SSLeay/SSLeay.so'  
for module Net::SSLeay: ld.so.1: perl: fatal: libssl.so.1.0.0: open failed:  
No such file or directory at /usr/perl5/5.8.4/lib/sun4-solaris-64int/DynaLoader.pm line 230.  
at -e line 0  
Compilation failed in require.  
BEGIN failed--compilation aborted.

對於命令

perl -MNet::SSLeay -e 'printf "%0x %0x %s\n", Net::SSLeay::OPENSSL_VERSION_NUMBER(), Net::SSLeay::SSLeay(), $Net::SSLeay::VERSION'

顯示未找到 libssl.so.1.0.0 庫,因此我執行該 find ./ -name libssl.so.1.0.0命令以找出它在系統上的位置。

之後,我將結果添加到$LD_LIBRARY_PATH

export LD_LIBRARY_PATH=/usr/sfw/lib:/opt/csw/lib:/opt/csw/lib/sparcv9

IO::Socket::SSL現在從 CPAN shell安裝包時,它會引發"API-different OpenSSL versions compiled in (0x1000000f) vs linked (0x1000215f) at Makefile.PL line 68."錯誤。

Net::SSLeay用 cpanminus 刪除了模組:

cpanm --uninstall Net::SSLeay

然後從 CPAN shell 重新安裝它:

notest install Net::SSLeay

它成功地完成了,但仍然拋出了一些有趣的消息:

gcc -c  -I"/usr/local/ssl/include" -D_LARGEFILE_SOURCE -D_FILE_OFFSET_BITS=64 -D_TS_ERRNO -O2 -fno-strict-aliasing   -DVERSION=\"1.90\" -DXS_VERSION=\"1.90\" -fPIC "-I/usr/perl5/5.8.4/lib/sun4-solaris-64int/CORE"   SSLeay.c  
SSLeay.xs: In function `bn2sv':  
SSLeay.xs:1765: warning: cast from pointer to integer of different size

之後,我嘗試手動安裝舊版本的IO::Socket::SSL軟體包(2.020 版本而不是 2.070)並且它成功了!

引用自:https://serverfault.com/questions/1055011