Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/perl/9.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Perl OS so模块的Makefile.PL meta.json prereqs赢得';不能安装在Windows上_Perl_Cpan - Fatal编程技术网

Perl OS so模块的Makefile.PL meta.json prereqs赢得';不能安装在Windows上

Perl OS so模块的Makefile.PL meta.json prereqs赢得';不能安装在Windows上,perl,cpan,Perl,Cpan,我正在开发一个不会在Windows上运行的Perl模块,以防止CPAN测试人员在Windows上失败。我想使用Makefile生成的发行版中的元文件来防止在Windows上安装或测试该模块 如果情况正好相反(模块仅在Windows上工作),则在Win32上指定依赖项将使其仅可在Windows上安装 另外,如果模块转换为Dist::Zilla,则需要相应的Dist.ini解决方案。说明: 虽然这不是一个非常优雅的解决方案,但推荐的方法是在Makefile.PL或Build.PL中死亡(或在测试文件

我正在开发一个不会在Windows上运行的Perl模块,以防止CPAN测试人员在Windows上失败。我想使用Makefile生成的发行版中的元文件来防止在Windows上安装或测试该模块

如果情况正好相反(模块仅在Windows上工作),则在Win32上指定依赖项将使其仅可在Windows上安装

另外,如果模块转换为Dist::Zilla,则需要相应的Dist.ini解决方案。

说明:

虽然这不是一个非常优雅的解决方案,但推荐的方法是在Makefile.PL或Build.PL中死亡(或在测试文件中退出),并显示以下消息之一:

不支持操作系统

不支持的操作系统


另一种方法是添加对或的依赖关系

这样做的好处是,当您的模块上传到CPAN时,人们会在依赖项中看到“Platform::Whather”,因此很明显您的模块需要什么平台


.Win32.pm只有
除非($^O eq“MSWin32”|$^O eq“cygwin”){die“OS unsupported\n”;}
在它的Makefile.PL中,你可以使用相同的方法(只是翻转条件)。两个失败,这个解决方案所做的就是使安装在不受支持的平台上失败,它不会包含在meta yml/json文件中。对于那些没有支持平台的特定密钥的人来说,这是规范的一个缺陷。另一个失败是,如果发行版切换到Dist::Zilla,解决方案就不会移植到Dist::Zilla。我刚刚找到了可以解决可移植性问题的Devel::AssertOS和Dist::Zilla::Plugin::AssertOS。关于“它没有包含在meta yml/json文件中”,它甚至没有到达生成这些文件的位置!关于“我刚刚找到了Devel::AssertOS和Dist::Zilla::Plugin::AssertOS,它们将解决可移植性问题”,一点也没有。他们不可能做任何不同的事情。Devel::AssertOS甚至与模块安装无关使用Devel::AssertOS告诉Makefile何时死亡在我看来比为Makefile中使用的特定操作系统寻找条件要好。因为Dist::Zilla有一个插件,所以相同的代码“use Devel::AssertOS qw(-MSWin32-Cigwin);”可以复制到dist.ini中。除非你看到了缺点或有更好的建议,请补充你的答案,我会接受。Devel::AssertOS非常非常简单。看一下代码,然后决定是否要为该代码创建另一个依赖项。我认为这不值得。你说得对,但它作为所需操作系统标识字符串的参考指南仍然很有价值。Dist::Zilla插件将它的一个副本捆绑到您的发行版中,并将其标记为不在cpan上编制索引。从历史上看,捆绑发行版中的其他软件还有其他问题。无论你发送什么,你都会被卡住,如果有问题,你必须更新你的软件,尽管实际上没有改变用户关心的任何东西。您可能会阅读有关Module::Install的历史记录,现在已经没有人真正使用它了。为了一个简单的任务,你要承担很多复杂的任务。