我需要在 Scientific Linux (RHEL) 安装脚本中自动安装 CPAN 和一些 Perl 模块。不幸的是,就我所见,我想要的特定模块(至少其中一个)无法作为 RPM:s 找到。
所以我需要安装 CPAN,自动配置它(或使用配置文件),然后自动安装所需的模块(包括依赖项)。
这似乎不是一个非常不寻常的要求,但我还没有看到任何关于此的非常好的文档。问题是,每当第一次启动 CPAN 时,都会运行交互式配置。这可以以某种方式跳过吗?以及如何直接从命令行启动模块安装?
我试图通过运行“cpan”并在提示符下键入“install DateTime”来安装 Perl DateTime 模块。经过大量处理和打印后,我收到了这条消息:
在 (eval 907) 第 3 行的 require 中编译失败。
# 看起来你的测试在输出任何东西之前就死了。
t/41cldr_format.........可疑
测试返回状态 255 (wstat 65280, 0xff00)
死了。失败的测试 1-101
101/101 测试失败,0.00% 正常
t/42duration_class ......好的
t/pod-coverage..........已跳过
全部跳过:测试 POD 覆盖率需要 Test::Pod::Coverage 1.08
t/pod…………跳过
全部跳过:Test::Pod 1.14 需要测试 POD
失败的测试统计 Wstat 总失败 失败 失败列表
-------------------------------------------------- -----------------------------
t/07compare.t 255 65280 26 18 69.23% 18-26
t/17set_return.t 255 65280 7 12 171.43% 2-7
t/19leap_second.t 255 65280 172 302 175.58% 22-172
t/23storable.t 255 65280 21 42 200.00% 1-21
t/24from_object.t 255 65280 10 8 80.00% … 我是 Perl 初学者。我想使用 Log::Log4perl 模块,因为我熟悉它在 Java 中的工作方式。我使用 cpanm 脚本下载模块,但我在没有“sudo”的情况下运行它。然后它将此模块安装到我的目录 /home/amer/perl5。之后,我将它安装为 sudoer,但我想删除我家目录中的安装以避免将来发生任何冲突。我怎样才能做到这一点? 这是我的 cmdline 执行堆栈。
感谢致敬!
我们 RHEL6 服务器上的一些应用程序依赖于存在的一些 Perl 模块。我想在启动新主机时添加这些 Perl 模块作为 Kickstart 过程的一部分。与启动缓慢的 CPAN 相反,我决定将这些 Perl 模块打包在一个 RPM 中,该 RPM 只是将它们转储到适当的位置,并在 Perl 的 lib 目录中创建任何必要的目录。
这是不好的做法,因为我并没有真正“安装”它们,而只是复制它们?
我正在尝试使用 CPAN 安装 XML::Parser perl 模块,但无法使其工作。以下是 CPAN 显示的输出,似乎表明问题在于 Expat。
\n\n安装这个对我们来说至关重要,我不知道下一步该做什么。任何帮助将不胜感激!
\n\ncpan[1]> install XML::Parser\nCPAN: Storable loaded ok (v2.21)\nGoing to read \'/root/.cpan/Metadata\'\n Database was generated on Fri, 15 Apr 2011 16:29:49 GMT\nRunning install for module \'XML::Parser\'\nRunning make for C/CH/CHORNY/XML-Parser-2.40.tar.gz\nCPAN: Digest::SHA loaded ok (v5.48)\nCPAN: Compress::Zlib loaded ok (v2.03)\nChecksum for /root/.cpan/sources/authors/id/C/CH/CHORNY/XML-Parser-2.40.tar.gz ok\nScanning cache /root/.cpan/build for sizes\n............................................................................DONE\nCPAN: Archive::Tar loaded ok (v1.68)\nXML-Parser-2.40\nXML-Parser-2.40/Changes\nXML-Parser-2.40/Makefile.PL\nXML-Parser-2.40/MANIFEST\nXML-Parser-2.40/META.yml\nXML-Parser-2.40/Parser.pm\nXML-Parser-2.40/README\nXML-Parser-2.40/Expat\nXML-Parser-2.40/Expat/encoding.h\nXML-Parser-2.40/Expat/Expat.pm\nXML-Parser-2.40/Expat/Expat.xs\nXML-Parser-2.40/Expat/Makefile.PL\nXML-Parser-2.40/Expat/typemap\nXML-Parser-2.40/inc\nXML-Parser-2.40/inc/Devel\nXML-Parser-2.40/inc/Devel/CheckLib.pm\nXML-Parser-2.40/Parser\nXML-Parser-2.40/Parser/LWPExternEnt.pl\nXML-Parser-2.40/Parser/Encodings\nXML-Parser-2.40/Parser/Encodings/big5.enc\nXML-Parser-2.40/Parser/Encodings/euc-kr.enc\nXML-Parser-2.40/Parser/Encodings/ibm866.enc\nXML-Parser-2.40/Parser/Encodings/iso-8859-2.enc\nXML-Parser-2.40/Parser/Encodings/iso-8859-3.enc\nXML-Parser-2.40/Parser/Encodings/iso-8859-4.enc\nXML-Parser-2.40/Parser/Encodings/iso-8859-5.enc\nXML-Parser-2.40/Parser/Encodings/iso-8859-7.enc\nXML-Parser-2.40/Parser/Encodings/iso-8859-8.enc\nXML-Parser-2.40/Parser/Encodings/iso-8859-9.enc\nXML-Parser-2.40/Parser/Encodings/Japanese_Encodings.msg\nXML-Parser-2.40/Parser/Encodings/koi8-r.enc\nXML-Parser-2.40/Parser/Encodings/README\nXML-Parser-2.40/Parser/Encodings/windows-1250.enc\nXML-Parser-2.40/Parser/Encodings/windows-1251.enc\nXML-Parser-2.40/Parser/Encodings/windows-1252.enc\nXML-Parser-2.40/Parser/Encodings/windows-1255.enc\nXML-Parser-2.40/Parser/Encodings/x-euc-jp-jisx0221.enc\nXML-Parser-2.40/Parser/Encodings/x-euc-jp-unicode.enc\nXML-Parser-2.40/Parser/Encodings/x-sjis-cp932.enc\nXML-Parser-2.40/Parser/Encodings/x-sjis-jdk117.enc\nXML-Parser-2.40/Parser/Encodings/x-sjis-jisx0221.enc\nXML-Parser-2.40/Parser/Encodings/x-sjis-unicode.enc\nXML-Parser-2.40/Parser/Style\nXML-Parser-2.40/Parser/Style/Debug.pm\nXML-Parser-2.40/Parser/Style/Objects.pm\nXML-Parser-2.40/Parser/Style/Stream.pm\nXML-Parser-2.40/Parser/Style/Subs.pm\nXML-Parser-2.40/Parser/Style/Tree.pm\nXML-Parser-2.40/samples\nXML-Parser-2.40/samples/canonical\nXML-Parser-2.40/samples/canontst.xml\nXML-Parser-2.40/samples/ctest.dtd\nXML-Parser-2.40/samples/REC-xml-19980210.xml\nXML-Parser-2.40/samples/xmlcomments\nXML-Parser-2.40/samples/xmlfilter\nXML-Parser-2.40/samples/xmlstats\nXML-Parser-2.40/t\nXML-Parser-2.40/t/astress.t\nXML-Parser-2.40/t/cdata.t\nXML-Parser-2.40/t/decl.t\nXML-Parser-2.40/t/defaulted.t\nXML-Parser-2.40/t/encoding.t\nXML-Parser-2.40/t/ext.ent\nXML-Parser-2.40/t/ext2.ent\nXML-Parser-2.40/t/external_ent.t\nXML-Parser-2.40/t/file.t\nXML-Parser-2.40/t/finish.t\nXML-Parser-2.40/t/foo.dtd\nXML-Parser-2.40/t/namespaces.t\nXML-Parser-2.40/t/parament.t\nXML-Parser-2.40/t/partial.t\nXML-Parser-2.40/t/skip.t\nXML-Parser-2.40/t/stream.t\n/bin/tar: Read 3072 bytes from -\nXML-Parser-2.40/t/styles.t\nCPAN: File::Temp loaded ok (v0.22)\nCPAN: Parse::CPAN::Meta loaded ok (v1.40)\n\n CPAN.pm: Going to build C/CH/CHORNY/XML-Parser-2.40.tar.gz\n\n\nExpat must be installed prior …Run Code Online (Sandbox Code Playgroud) 我是一名系统管理员,管理着三台气隙式(零互联网访问)超级计算机。我们需要在其中一台超级计算机上运行 Bugzilla。我已经建立了自己的本地 yum 存储库,但现在我需要启动并运行 Bugzilla,这需要本地 CPAN。我按照我在此处找到的说明在笔记本电脑上构建了本地 CPAN:
http://www.stonehenge.com/merlyn/LinuxMag/col42.html
并将 CPAN 同步到超级计算机的主目录。当我回到 Bugzill 目录运行安装时,install-module.pl 找不到本地 CPAN 目录。我如何配置我的超级计算机的 perl 以自动知道它的本地 CPAN 所在的位置,以便我可以完成我的 Bugzilla 任务?
我花了几个小时但无法安装 CPAN Crypt::OpenSSL::RSA 模块。Postfix 的 dkimproxy 附加组件需要它。
我所做的是在shell中运行以下命令:
$ perl -MCPAN -e 'install Crypt::OpenSSL::RSA'
Run Code Online (Sandbox Code Playgroud)
当我运行这个命令时,会显示几行,最后显示:
Checking if your kit is complete...
Looks good
Warning: prerequisite Crypt::OpenSSL::Random 0 not found.
Writing Makefile for Crypt::OpenSSL::RSA
---- Unsatisfied dependencies detected during [I/IR/IROBERTS/Crypt-OpenSSL-RSA-0.26.tar.gz] -----
Crypt::OpenSSL::Random
Shall I follow them and prepend them to the queue
of modules we are processing right now? [yes]
Run Code Online (Sandbox Code Playgroud)
然后我按回车键(是),然后生成了几十行错误。最后我得到了这个:
...
...
RSA.xs:579: warning: implicit declaration of function ‘RSA_sign’
RSA.xs:579: error: ‘rsaData’ has no member named ‘hashMode’
RSA.xs:579: error: ‘rsaData’ …Run Code Online (Sandbox Code Playgroud) 我已经使用 cpanm 在我的系统上安装 cpan perl 模块,但是 .cpanm/work 目录是 100 兆字节,我想删除它。
我可以删除这个目录而不会对我的 cpanm 安装产生不利影响吗?
有没有一种简单的、向后兼容的方法来使用 CPAN 静默安装 Perl 模块?
PERL_MM_USE_DEFAULT不适用于未检测到默认大陆的旧版本;CPAN 将在
对不起!由于您没有任何现有选择,因此您必须进行地理选择。
可以使用 Perl 片段来加载 CPAN 并对其进行配置,但这既冗长又丑陋。
我经常不得不为我的雇主设置新服务器,以达到他的确切目的,因此它们都必须以完全相同的方式设置。所以我在 PHP 中创建了一个脚本,我从自己的机器上运行该脚本以自动发送所有相关文件、编译所有内容、运行更新以及其他所有内容。
但是,出于某种原因,这些全新的服务器带有 perl,这很好,但是它们在不同的位置安装了 perl。这让我在Config.pm不进入并手动查找位置的情况下复制CPAN很痛苦。
是否有一些我不知道的命令会追捕准确的位置?
如果有帮助,通常服务器是 CentOS 5
我想弄清楚为什么 Perl 模块不会安装在我的服务器上。
cpanm WWW::Mechanize
Run Code Online (Sandbox Code Playgroud)
它处理了很长时间的东西,然后最终死亡:
root@admin:~# cpanm WWW::Mechanize
--> Working on WWW::Mechanize
Fetching http://www.cpan.org/authors/id/O/OA/OALDERS/WWW-Mechanize-1.90.tar.gz ... OK
Configuring WWW-Mechanize-1.90 ... OK
Building and testing WWW-Mechanize-1.90 ... FAIL
! Installing WWW::Mechanize failed. See /root/.cpanm/work/1543994046.20570/build.log for details. Retry with --force to force install it.
Run Code Online (Sandbox Code Playgroud)
日志文件中有这样的东西:
t/00-report-prereqs.t .................... ok
t/add_header.t ........................... ok
t/aliases.t .............................. ok
t/area_link.t ............................ ok
t/autocheck.t ............................ ok
t/bad-request.t .......................... ok
t/clone.t ................................ ok
t/content.t .............................. ok
# Test server http://127.0.0.1:31546 as PID 20661
t/cookies.t .............................. ok
t/credentials-api.t ...................... ok …Run Code Online (Sandbox Code Playgroud) 我正在尝试安装 CentOS 7 服务器来运行请求跟踪器。通过运行make testdeps我可以看到所有丢失的包,make fixdeps并且应该安装这些包。有一个我无法安装的软件包 ( GnuPG::Interface)。这个包被 Perl 使用。
我已经尝试通过cpan install GnuPG::Interfaceand安装它cpan install GnuPG::Interface --force,但是每次我收到一条错误消息时说:
Can't locate Fatal.pm in @INC (@INC contains: ./t /root/.cpan/build/GnuPG-Interface-0.51-CdOOe3/inc
/root/.cpan/build/GnuPG-Interface-0.51-CdOOe3/blib/lib /root/.cpan/build/GnuPG-Interface-0.51-
CdOOe3/blib/arch /usr/local/lib64/perl5 /usr/local/share/perl5 /usr/lib64/perl5/vendor_perl
/usr/share/perl5/vendor_perl /usr/lib64/perl5 /usr/share/perl5 .) at /root/.cpan/build/GnuPG
-Interface-0.51-CdOOe3/blib/lib/GnuPG/Interface.pm line 23.
Run Code Online (Sandbox Code Playgroud)
我试过运行yum install perl-Test-Fatal,但即使在安装过程之后错误不断出现。如果我尝试使用cpan.