【问题标题】:company Perl missing Makefile.PL or Build.PL公司 Perl 缺少 Makefile.PL 或 Build.PL
【发布时间】:2019-11-22 02:14:05
【问题描述】:

我们有 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 ()

【问题讨论】:

  • Makefile.PL 或 Build.PL 由 发行版 提供,而不是由 perl 提供。
  • 查看 perlbrew,它允许您在您的用户帐户中安装 perl 和 perl 模块,perlbrew.pl

标签: perl module


【解决方案1】:

实用程序which(我系统上的内置外壳)

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

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

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

请务必阅读发行版的文档,其中包含有关如何安装它的特定说明,但您将从perl Makefile.PLperl Build.PL 开始。例如,一旦您在解压后的发行版中找到了文件Makefile.PL,典型的流程就是运行

perl Makefile.PL
制作
进行测试
进行安装

快速搜索显示this guide on perlmonks。还有很多。

Build.PL一般与Module::Build相关联,安装大纲同上,只是用./Build代替make。有了它,你甚至不需要make

这种方法是ExtUtils::MakeMaker 的替代方法,它使用Makefile.PL。比较这两个主要的替代方案是很棘手的,我不想进入那个。 Module::Build 也可以生成文件Makefile.PL。可以同时提供这两个文件,以便使用任何一种方法,而这个决定本身就是一个讨论主题。

至于是否使用Makefile.PLBuild.PL 进行安装,我建议查找有关该模块的讨论,从它自己的文档开始,然后看看人们为该发行版推荐了哪一个。大多数情况下两者都可以。

另一种相关的常见文件类型是Makefile(无扩展名)。这是由程序make 运行的,并且通常没有参数(make 找到Makefile)。上面的第一个命令写出一个这样的文件,然后剩余的make 命令使用它来触发构建(+测试+安装)模块的操作。

您是否考虑过改用cpancpanm?您可以使用它们以用户身份将内容安装到您选择的目录中。例如,参见this postthis post

或者,考虑perlbrew 一个包含所有选定模块的完全包含的 Perl,与系统 perl 的任何未来管理隔离。

【讨论】:

  • @capser 对我最后忘记提及的内容添加了评论——您可以使用 cpan/cpanm 将模块作为用户安装到任何目录中,这非常简单。另一方面,考虑使用 perlbrew 安装您喜欢的整个 Perl。然后你可以用那个 Perl 拥有所有你想要的模块。这样您就可以免受系统 perl 更改的影响。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多