我们有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 ()
答案 0 :(得分:3)
实用程序which
(我的系统内置shell)
显示(shell)命令的完整路径
因此,它可以查询已安装程序的位置,例如ls
或cd
,它还将显示命令实际上是否是shell命令。例如,尝试which echo
。
文件Makefile.PL
和/或Build.PL
附带分发版,而非Perl版。它们不是安装在系统上的程序,即使它们在那里which
也找不到它们。
请务必阅读包含该发行版的文档,特别是有关如何安装该文档的说明,但您希望在某些时候运行perl Makefile.PL
或perl 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.PL
或Build.PL
进行安装,我建议从自己的文档开始查找该模块的讨论,并查看人们为该分发推荐的内容。大多数情况下都很好。
另一种相关的常见文件类型是Makefile
(无扩展名)。这由程序make
运行,通常没有参数(make
找到Makefile
)。上面的第一个命令写出一个这样的文件,make
个用它来触发构建(+ test + install)模块的动作。
您是否考虑过使用ExtUtils::MakeMaker或cpan?您可以使用它们将用户的内容安装到您选择的目录中。例如,请参阅cpanm和this post。或者,考虑this post以获得包含所有选定模块的完全包含的Perl,与系统perl的任何未来管理隔离。