我为我的公司编写了一个脚本,我正在使用从CPAN获得的一些库。我的经理希望我整合并删除额外的库 - 这有点好笑,因为我将它们包含在脚本中才能工作。
一些注意事项:
use 'libs';
我的CPAN模块之前位于顶部use
。我现在唯一的解决方案就是将perl模块的内容直接放在perl脚本中。但是,我希望在它到期的地方给予信任,并且在将开源代码包含在其作者和组织的适当信用中时也不会遇到麻烦。
因此,我应该怎么做呢?我并不是想逃避任何事情。老实说,我想以正确的方式做这件事。
所有三个模块都说"以与Perl本身相同的条款获得许可"但我觉得这不容易。
我也想探索其他任何想法!
模块是:
答案 0 :(得分:2)
您正在使用PAR Packager选项吗?这将生成一个独立的可执行文件。
答案 1 :(得分:1)
有趣的问题&透视。我不明白什么是反对使用库或模块,但我会让你的经理思考; - )
关于版权,如果您想确定,最好咨询律师,但据我了解,如果您保留版权声明,则可以合并其他人的作品。合并后的工作may not be covered by copyleft,因此您可以在商业上使用它(即,在不公开来源的情况下分发它)。但请咨询律师。
但是,既然你说你想探索其他想法,App::Staticperl可能是一个解决方案吗?我没有使用它的经验,但我尝试了一个简单的例子并得到了一个可行的可执行文件。
App :: Staticperl从带有嵌入式CPAN模块的Perl解释器构建独立的可执行文件。我遵循的步骤大致是(你需要适应,因为显然我无法用你的脚本测试):
EMAIL
和CPAN
(可选,但您可能需要更改CPAN镜像)./staticperl install
下载并构建Perl;它以我的盒子上的错误消息结束,但确实产生了一个有效的Perl ./staticperl cpan
进入交互式CPAN提示; install Text::Table
,install Term::ANSIColor
以及您需要的任何其他内容./staticperl mkapp my_app --boot path/to/your/script -MText::Table -MText::Aligner -MTerm::ANSIColor
./my_app
- 它很可能会失败并显示有关缺少模块的错误消息;重复上一步,并在-M
标志答案 2 :(得分:1)
如果模块是纯Perl模块,您可以简单地将代码(包括那些package
语句)附加到您的程序中。我还包括POD,其中包括版权声明和作者姓名。这应该满足艺术许可要求(但可能不符合GNU许可要求)。
另一种可能性是使用Perlbrew,这将允许您在系统上安装用户版本的Perl。这样,您可以在不需要管理权限的情况下安装CPAN模块,也可以告诉其他用户也使用Perlbrew。
我使用它是因为我可以在各种版本的Perl之间安装和切换,这允许我在各种版本的Perl中测试我的Perl脚本。我也在我们的服务器上使用它,我需要更新版本的Perl或标准版本中没有包含的模块。
在安装Perlbrew之前,您需要获得IT部门的批准,但很多时候他们不再需要为维护和安装CPAN模块而烦恼。
答案 3 :(得分:0)
您可以减少不必要的代码(以满足您的经理的顾虑)。在它所带来的文件中留下所需的代码 - 并在该模块/包中给予作者信用。
例如:这是来自Joe E Perl的灵感(被盗)。