fbr*_*eto 17 installation perl dependencies automation cpan
我有一个Perl脚本,它有两个CPAN中存在的依赖项.我想要做的是让脚本本身提示用户安装必要的依赖项,以便脚本能够正常运行.如果用户需要输入某种身份验证来安装那些没关系的依赖项:我要避免的是以下工作流程:
运行脚本 - >观察它失败 - >漫无目的地搜索CPAN - > Lynch脚本编写者
相反,我希望有类似的东西:
运行脚本 - >自动下载脚本依赖项(根据需要进行身份验证) - >脚本成功 - >购买脚本编写器啤酒
可以这样做吗?
mob*_*mob 19
每个标准构建范例都有自己的指定依赖关系的方式.在所有这些情况下,构建过程将尝试在某些上下文中自动安装依赖项.
在ExtUtils::MakeMaker,您将PREREQ_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
...
},
...
);
Run Code Online (Sandbox Code Playgroud)
在Module::Build,您将hashref传递给该build_requires字段:
# 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();
Run Code Online (Sandbox Code Playgroud)
在Module::Install,您requires在调用编写Makefile的命令之前执行一个或多个命令:
# Makefile.PL
use inc::Module::Install;
...
requires 'Some::Dependency' => 0;
requires 'Some::Other::Dependency' => 0.42;
test_requires 'Test::More' => 0.89;
...
WriteAll;
Run Code Online (Sandbox Code Playgroud)