安装大量 perl 模块

安装大量 perl 模块

我接到一份工作,记录如何将一个非常复杂的应用程序安装到干净的服务器上。该应用程序的一部分需要大量的 perl 脚本,而每个脚本似乎都需要大量不同的 perl 模块。

我对 perl 了解不多,而且我只知道一种安装所需模块的方法。这意味着我的文档现在如下所示:

键入以下每个命令并接受所有默认值:

sudo perl -MCPAN -e 'install JSON'
sudo perl -MCPAN -e 'install Date::Simple'
sudo perl -MCPAN -e 'install Log::Log4perl'
sudo perl -MCPAN -e 'install Email::Simple'
(.... continues for 2 more pages... )

有什么方法可以像使用 aptitude 一样完成这一行吗

输入以下命令然后去喝杯咖啡:

sudo aptitude install openssh-server libapache2-mod-perl2 build-essential ...

谢谢(代表那些长期阅读我的文件的受苦受难的人们)


编辑:最好的方法是使用打包版本。对于未针对 Ubuntu 10.10 打包的模块,我最终找到了一个小的 perl 脚本这里

#!/usr/bin/perl -w
    use CPANPLUS;
    use strict;
    CPANPLUS::Backend->new( conf => { prereqs => 1 } )->install(
        modules => [ qw(
            Date::Simple
            File::Slurp
            LWP::Simple
            MIME::Base64
            MIME::Parser
            MIME::QuotedPrint
        ) ]
    );

这意味着我可以在文档中放入一行漂亮的代码:

sudo perl installmodules.pl

答案1

根据您的发行版,许多 perl 模块可能已经打包。

在使用 CPAN 之前,请检查您的发行版是否还缺少部分/大部分/全部所需的软件包。

答案2

我发现 CPAN 不太适合长期运行的系统,因为随着时间的推移更新模块似乎不太理想。

我建议使用系统内置的包管理系统。通过使用特定于发行版的存储库,您可以应该依赖关系问题更少,随着模块更新,您也会收到新版本。由于您似乎正在使用 Ubuntu,您可能需要启用一些额外的存储库,例如 world、metaverse 或 uber-ultra-intraverse。

除此之外,还有一个相对较新的网站,名为Linux 软件包搜索它试图为各种系统编译软件包。如果其他地方找不到我需要的额外软件包,我很幸运能在这里找到。

答案3

如果您需要从源代码安装这些模块(我经常需要这样做,因为我以非 root 用户身份在系统标准以外的位置安装它们),我推荐使用 CPANPLUS 作为标准 CPAN 的值得升级 - 它可以处理依赖关系解析并且可以在您喝咖啡时自动安装所有模块的依赖关系。

另外,如果您正在安装的这个大型复杂应用程序也分布在 CPAN 上(我猜测它是 RT,每个人最喜欢的 perl 依赖项噩梦),Bundle::AppNameCPAN 上通常也会有一个包,它汇总了应用程序给定版本所需的一切。

希望这能有所帮助;祝你好运!

答案4

使用系统函数并在每个模块安装后使用 && 运算符,例如

system("sudo apt-get install 1 && sudo apt-get install 2 &&....");

相关内容