Perl
IO::Socket::SSL“記憶體不足”安裝錯誤
我想在 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)並且它成功了!