Как включить зависимость CPAN в приложение Perl? - PullRequest
0 голосов
/ 27 июля 2011

Я хочу распространить свое Perl-приложение с одной зависимостью CPAN.Могу ли я включить проверку этой зависимости, когда кто-то запускает приложение.Через аргумент командной строки или внутри perl напрямую?

Ответы [ 2 ]

5 голосов
/ 27 июля 2011

Помимо множества способов, обсуждаемых в этом вопросе , вы можете также рассмотреть возможность связывания необходимого модуля с вашим кодом. Вам доступно несколько вариантов PAR, PAR::Packer и другие.

3 голосов
/ 27 июля 2011

Это чистый модуль Perl без других зависимостей?

Я бы просто упаковал его с моим кодом. Черт возьми, вы можете даже добавить его в свой файл, если хотите.

Если это немного сложнее, то есть необходимо установить дюжину необходимых модулей, и требуется некоторая компиляция, вам придется использовать CPAN для ее загрузки. Существует CPAN :: AutoINC , который предполагает загрузку и установку любых необходимых вам модулей из CPAN, когда модуль требуется, а не по пути @INC.

Тем не менее, по моему опыту, у вас все в порядке с червями. Пользователь может начать запускать вашу программу, думая, что она запустится всего на минуту, и обнаружит, что он тратит 20 минут на загрузку, компиляцию и тестирование необходимых модулей, когда у них действительно нет времени.

Лучше просто потерпеть неудачу и дать хорошее объяснение того, что требуется. Пользователь может предпочесть запустить cpan от имени пользователя root, поэтому он доступен для всех на машине. Или, может быть, им нужно попросить системного администратора сделать это за них.

Я обнаружил, что могу сделать что-то вроде этого:

our $missingModuleFlag;

BEGIN {
  eval { require My::Mod; };
  our $missingModuleFlag = $@ if ($@);
}

[...]

our $missingModuleFlag;   #Package Variable -- Value is from above
if ($missingModuleFlag) {
   die <<EOM;
ERROR: You are missing module "My::Mod" which is required for
    this program. Please use "cpan" to download this module
    and install it on this server. If you have no idea what
    I am talking about, see http://www.cpan.org/modules/INSTALL.html.
    If that doesn't make any sense to you, then ask a system administrator.
EOM
}

Он объясняет, в чем заключается проблема, и что нужно сделать, и дает пользователю выбор: либо продолжить установку, либо попросить кого-то другого сделать это для них.

...