我使用ExtUtils :: MakeMaker来分发我的perl模块,它由一个PM文件和一个可执行文件组成。ExtUtils :: MakeMaker如何安装配置文件
可执行文件必须加载配置文件。
我希望我的Makefile.PL到:
- 生成配置文件;
- 将其安装在正确的PREFIX中;
- 修改可执行文件以设置配置文件的实际路径。
但我不知道如何做到这一点。
我使用ExtUtils :: MakeMaker来分发我的perl模块,它由一个PM文件和一个可执行文件组成。ExtUtils :: MakeMaker如何安装配置文件
可执行文件必须加载配置文件。
我希望我的Makefile.PL到:
但我不知道如何做到这一点。
这是制作者真正痛苦的地方。你必须知道如何在make
中做到这一点。
首先,Makefile.PL只是一个Perl程序,所以你可以做任何你想做的事情。
其次,您可以使用一个.PL文件作为运行以生成真实文件的程序。例如,你可以有一个lib/Module.pm.PL。在构建时,系统运行该程序并使用输出创建blib/lib/Module.pm。请参阅PL_FILES
的文档。
第三,您可以将任务添加到make
目标,以便您的处理在正确的时间发生。双冒号目标添加到已定义的任务中。
all ::
perl create_config.pl > config.pl
install ... config.pl
为了这个从Makefile.PL添加到的Makefile,你有特殊的子程序添加到MY
命名空间。这些都记录在Makemaker中,但文档假定您对make
感到满意。
但是,即使你知道如何去做,所有这些都是屁股疼痛。你认为你已经想通了,然后有人有不同的设置或不同种类的make
。你花费你所有的时间在各个地方使其兼容。这是Perl神的发明Module::Build的主要原因之一。添加自定义处理和修改构建目标变得更加容易,您可以在Perl中完成所有这些工作,如和!根据经验,如果您不知道如何使用Makemaker来做,那么可以使用Module::Build。
如果代码在没有配置文件的情况下运行,那么使您的代码回落到合理的默认行为。如果它所需要的信息不是以某种方式传递,而是要求它特定在文件中听起来讨厌,那么该工具可能会死亡。 – tripleee 2012-07-09 08:43:58
配置文件仅存储setuid/setgid的用户/组,默认情况下,程序将其设置为nobody:nobody。无论如何,该程序必须加载配置文件,并且我不知道如何设置真正的路径(PREFIX/etc/...) – linkdd 2012-07-09 08:49:59