Perl脚本可以安装自己的CPAN依赖项吗?
我有一个Perl脚本,它在CPAN中有两个依赖项。我想做的是让脚本本身提示用户安装必要的依赖项,以便脚本能够正常运行。如果用户需要输入某种身份验证来安装依赖项,这很好:我试图避免的是以下工作流: 运行脚本->监视它失败->无目的地搜索CPAN->对脚本编写器执行Lynch操作 相反,我希望的是: 运行脚本->自动下载脚本依赖项(根据需要进行身份验证)->脚本成功->为脚本编写器购买啤酒Perl脚本可以安装自己的CPAN依赖项吗?,perl,automation,installation,dependencies,cpan,Perl,Automation,Installation,Dependencies,Cpan,我有一个Perl脚本,它在CPAN中有两个依赖项。我想做的是让脚本本身提示用户安装必要的依赖项,以便脚本能够正常运行。如果用户需要输入某种身份验证来安装依赖项,这很好:我试图避免的是以下工作流: 运行脚本->监视它失败->无目的地搜索CPAN->对脚本编写器执行Lynch操作 相反,我希望的是: 运行脚本->自动下载脚本依赖项(根据需要进行身份验证)->脚本成功->为脚本编写器购买啤酒 可以这样做吗?您可以从脚本内部执行此操作 perl-MCPAN-e'install MyModule::myd
可以这样做吗?您可以从脚本内部执行此操作
perl-MCPAN-e'install MyModule::mydependens'
每个标准构建范例都有自己指定依赖项的方法。在所有这些情况下,构建过程将尝试在某些上下文中自动安装依赖项
在中,将PREREQ\u PM
字段中的哈希引用传递到WriteMakefile
:
# Makefile.PL for My::Module
use ExtUtils::MakeMaker;
WriteMakefile (
NAME => 'My::Module',
AUTHOR => ...,
...,
PREREQ_PM => {
'Some::Dependency' => 0, # any version
'Some::Other::Dependency' => 0.42, # at least version 0.42
...
},
...
);
在中,将hashref传递给构建所需的
字段:
# Build.PL
use Module::Build;
...
my $builderclass = Module::Build->subclass( ... customizations ... );
my $builder = $builderclass->new(
module_name => 'My::Module',
...,
build_requires => {
'Some::Dependency' => 0,
'Some::Other::Dependency' => 0.42,
},
...
);
$builderclass->create_build_script();
在中,在调用命令写入生成文件之前,执行一个或多个requires
命令:
# Makefile.PL
use inc::Module::Install;
...
requires 'Some::Dependency' => 0;
requires 'Some::Other::Dependency' => 0.42;
test_requires 'Test::More' => 0.89;
...
WriteAll;
对不幸的是,我忘了怎么做。即使这可以做到,这也是个坏主意。“安装”和“运行”是两个不同的任务,通常由具有不同权限的不同用户执行。最多脚本应该检查依赖项并告诉我如何安装它们。。。如果我运行的脚本尝试“自动”执行此操作,我希望对作者进行私刑。我同意,请为脚本创建安装依赖项的安装文件,很可能使用以下选项之一。-1因以下原因无效。