【问题标题】:How do I install a module and its dependencies in ActivePerl on Windows?如何在 Windows 上的 ActivePerl 中安装模块及其依赖项?
【发布时间】:2010-12-25 06:11:22
【问题描述】:

我想使用 gmail 的 smtp 服务器和 perl 发送电子邮件。我正在尝试安装Email::Send::Gmail,但我不清楚安装它的步骤是什么。好像依赖于我没有安装的其他模块。

【问题讨论】:

  • 这只是必须是个骗子。
  • @Manni:我看了,我发现的每个模块安装 Q 都有一些 additional 约束。我找不到有人问基本问题的地方。
  • 这里也一样。我想这意味着我必须投票赞成这个问题。
  • 我忘记了:我在 Windows 上使用 Active Perl
  • 在问题中澄清你的问题,而不是 cmets。

标签: perl module perl-module


【解决方案1】:

类型:

 cpan Email::Send::Gmail

…在命令提示符下。

首先设置local::lib 可能是个好主意。

或查看Perl Foundation Wiki on installing CPAN modules 或相同但without root access

或查看the CPAN guide to installing modules

【讨论】:

  • 这是 ActivePerl,所以他应该先尝试 PPM。向 Gmail 发送邮件需要一些已编译的模块,其中至少有一个需要第三方 OpenSSL 库。在这种情况下,它并不像你想象的那么容易。
【解决方案2】:

你可以安装它:

perl -MCPAN -e shell
install Email-Send-Gmail

希望对你有帮助,

/克劳斯

【讨论】:

  • 这是ActivePerl,所以他应该先尝试PPM。向 Gmail 发送邮件需要一些已编译的模块,其中至少有一个需要第三方 OpenSSL 库。在这种情况下,它并不像你想象的那么容易。
【解决方案3】:

这部分取决于您使用的 Perl 发行版。

ActivePerl 包含一个名为 PPM(Perl 包管理器)的实用程序,用于安装模块。它自动处理依赖关系解析。 PPM 特别适合在通常没有编译器的 Windows 上安装 XS 模块。 PPM 的缺点是它的某些 CPAN 模块不可用(可能是因为它们无法通过 ActiveState 的自动构建过程)。您可以从开始菜单或在命令提示符处键入 ppm 来运行 PPM。

更通用的选项是使用交互式CPAN shell。请注意,您必须有一个编译器才能使用此方法安装 XS 模块。您可以通过在命令提示符下键入 cpan 来访问 cpan shell。

最后手段的蛮力方法是从 CPAN 下载 tarball 并一次手动安装一个。当安装由于不满足的依赖关系而中止时,请下载并安装它们,然后返回第一个模块并重试。

【讨论】:

    【解决方案4】:

    如果可以的话,CPAN。 (哈!它押韵......多么犯罪。哎呀,又犯了!这什么时候结束...... :p)它本质上是为您的系统安装模块的方式。它会自动为您检测依赖关系、下载、安装和测试它们,并在构建或测试失败时退出。这是安装模块的一种奇妙而可靠的方式。如果您使用 ActiveState 发行版之外的任何 Perl 发行版,包括 Strawberry Perl,这将非常有用。通常,这是通过

    cpan Module::Name
    

    或者,在交互模式下,

    $ cpan
    cpan > install Module::Name
    

    如果您使用 ActiveState Perl,那么您可能想要使用 ActiveState 的 PPM(Perl 包管理器)。它类似于 CPAN,除了所有内容都是为 ActiveState Perl 预构建的。 ActiveState 在其网站上的how to use their Perl Package Manager 上有一个文档,包括一个图形示例。

    如果简单的选项失败了,你也不会不走运。还有一些更复杂的手动方法仍然可以安装模块。

    您可以下载的大多数模块都在 .yaml 文件中包含一些元数据;这将帮助您确定是否拥有所有依赖项。 CPAN 和 PPM 会自动解析并安装您的所有依赖项,但手动执行不会,将这项任务留给您。

    假设您拥有所有依赖项,并且需要手动安装它,请查找以下两个文件之一:Makefile.PL 或 Build.PL。如果你有 Makefile.PL,cd 到你在命令提示符中提取模块的目录,然后输入:

    perl Makefile.PL
    make
    make test
    make install
    

    您的系统上需要一个“make”程序。如果是 ActiveState Perl,您可能需要手动安装模块(请参阅下面的一两段。)

    如果它恰好有一个 Build.PL,那么您需要执行一组稍微不同的步骤:

    perl Build.PL
    Build
    Build test
    Build install
    

    (当然,如果 make/Build 测试失败,您可能会考虑不安装,但这取决于您。)

    作为最后的替代方案,如果您的模块没有 xs 文件(即需要在安装时编译的代码),并且满足所有依赖项,您只需将 lib 文件夹中的文件移动到您的perl 安装的site\lib 文件夹。如果您只想将它​​用于一个项目,您可以添加一个 PERL5LIB 环境变量,指向一个新的自定义库目录(例如,/my/project/lib),然后在运行您的工具之前,确保已设置环境.

    作为后续,请参阅PerlFaq8 - How do I install a module from CPAN

    另外,请参阅PerlFaq8 - How do I keep my own module/library directory?

    【讨论】:

    • 你的大部分答案都在展示非常困难和困难的方法,而没有给出正确方法的示例。
    • 还不错;添加了一些示例并详细说明了答案的“其余部分”是使其正常工作的紧急/备用方式。
    • 这个特殊问题的大部分将与 OpenSSL 问题有关。 PPM 确实是这里的首选方法。
    • 好吧,是的,如果它只是 ActiveState。当问题是关于安装包的一般问题时,这个答案更有意义,在您更改标题以仅反映 ActiveState...
    • 我只是根据来自 OP 的附加信息更改了标题。不过,正如我在回答中指出的那样,即使没有 ActivePerl,它还有更多功能。
    【解决方案5】:

    如果您使用 ActivePerl,请先尝试使用 ActivePerl 附带的PPM (Perl Package Manager) 工具。当您告诉它安装一个模块时,它应该为您处理所有依赖项。

    注意dependency tree 用于电子邮件::发送::Gmail。其中一些模块需要额外安装第三方软件,尤其是 OpenSSLcpan 不会为您安装。

    【讨论】:

      【解决方案6】:

      混合安装方法是在要求你不需要的心痛和头痛。

      不要将 CPAN 与 Active Perl 一起使用。使用 PPM。*

      PPM 下载源可以在Randy Kobes' site找到。

      如果您找不到所需模块的 PPM,您可以使用 Mr. Kobes make_ppm 轻松构建自己的 PPM。

      您可以下载一个发行版并简单地运行 make_ppm 来构建 PPM,但我更喜欢执行更“正常”的构建过程:

      perl Makefile.PL
      make
      make test
      make_ppm
      

      *如果您将文件安装在 c:/perl/site/* 之外,则可以使用 CPAN。只是不要将 CPAN shell 模块与 PPM 模块混合在一起。

      【讨论】:

      • 你有什么理由不混合安装方法吗?我可以看到它扰乱了 PPM/cpan 对安装内容的看法,但它不应该对 Perl 本身的操作造成任何问题。有时模块无法通过 PPM 获得,您必须依靠 cpan 或手动安装。
      • @Michael,我见过的最糟糕的问题来自于混合 RPM 和 CPAN——那是纯粹的、甜蜜的地狱。相比之下,PPM+CPAN 比较温和。处理依赖项检查时出现的主要问题。 PPM 可能会在现有 CPAN 模块安装上安装模块的新(或旧)版本。几年前发生在我身上,现在情况可能会好一些。这次经历是最后一根稻草,我决定再也不混包管理器了。我需要的大部分东西都已经打包好了。但对于其余部分,PPM::Make 易于使用。我没有后悔我的决定。
      猜你喜欢
      • 2012-06-02
      • 1970-01-01
      • 2011-02-10
      • 1970-01-01
      • 2020-09-07
      • 2014-11-09
      • 1970-01-01
      • 2021-08-14
      • 1970-01-01
      相关资源
      最近更新 更多