我使用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