公司Perl缺少Makefile.PL或Build.PL

时间:2017-10-04 01:39:22

标签: perl module

我们有perl工作,但我没有机器上的安装权限。所以我想下载我想要的模块的tar文件,并在我选择的目录中构建它们。 但是我没有Makefile.PL或Build.PL。我该怎么办?

$ which Makefile.PL
/usr/bin/which: no Makefile.PL in ()
$ which Build.PL
/usr/bin/which: no Build.PL in ()

1 个答案:

答案 0 :(得分:3)

实用程序which(我的系统内置shell)

  

显示(shell)命令的完整路径

因此,它可以查询已安装程序的位置,例如lscd,它还将显示命令实际上是否是shell命令。例如,尝试which echo

文件Makefile.PL和/或Build.PL附带分发版,而非Perl版。它们不是安装在系统上的程序,即使它们在那里which也找不到它们。

请务必阅读包含该发行版的文档,特别是有关如何安装该文档的说明,但您希望在某些时候运行perl Makefile.PLperl Build.PL。例如,一旦在解压缩的发行版中找到文件Makefile.PL,典型的流程就包括运行

  

perl Makefile.PL
  使
  进行测试   make install

快速搜索显示this guide on perlmonks。那里还有更多。

Build.PL通常与Module::Build相关联,除了您使用./Build代替make外,安装大纲与上述相同。有了它,你甚至不需要make

此方法是使用Makefile.PL的{​​{3}}的替代方法。比较这两个主要的替代方案是棘手的,我宁愿不深入研究。 Module::Build也可以生成文件Makefile.PL。可以提供这两个文件,以便可以使用任何一种方法,这个决定本身就是讨论的主题。

至于是否使用Makefile.PLBuild.PL进行安装,我建议从自己的文档开始查找该模块的讨论,并查看人们为该分发推荐的内容。大多数情况下都很好。

另一种相关的常见文件类型是Makefile(无扩展名)。这由程序make运行,通常没有参数(make找到Makefile)。上面的第一个命令写出一个这样的文件,make个用它来触发构建(+ test + install)模块的动作。

您是否考虑过使用ExtUtils::MakeMakercpan?您可以使用它们将用户的内容安装到您选择的目录中。例如,请参阅cpanmthis post。或者,考虑this post以获得包含所有选定模块的完全包含的Perl,与系统perl的任何未来管理隔离。