Как проверить наличие Perl, его версию и наличие необходимого модуля?
Я написал сценарий Perl, я просто хочу дать его каждому, для этого я планировал написать сценарий bash, который используется для тестирования среды пользователя и найти, способна ли эта среда запускать скрипт Perl.
Я хочу проверить такие вещи, как:
- установлен ли Perl в этой системе
- Perl должен иметь версию 5 или более
- является ли модуль JSON:: Any доступно
любое предложение было бы весьма признателен : -)
3 ответов
if perl -MJSON::Any -e 'print "$JSON::Any::VERSION\n"' >/dev/null 2>&1
then : OK
else echo "Cannot find a perl with JSON::Any installed" 1>&2
exit 1
fi
Я часто использую '${PERL:-perl}
' и аналогичные конструкции для идентификации команды (для awk
vs nawk
или gawk
; troff
vs groff
; и др.).
если вы хотите проверить версию JSON:: Any, захватите вывод из команды вместо этого.
Если вы хотите протестировать версию Perl, добавьте'use 5.008009;
' или любое число, которое вы считаете разумным. (Не так давно они, наконец, удалили Perl 4 из одной из файловых систем, смонтированных в NFS, но это было не единственное Perl на машине - по крайней мере, не в последнее десятилетие или больше!)
нет, не пишите сценарий оболочки. У Perl уже есть прекрасный способ сделать это. Правильный способ сделать это-создать готовый к CPAN дистрибутив, используя обычную цепочку инструментов. Некоторые из них объясняются в perlnewmod, perlmodstyle и perlmodinstall.
для минимального рабочего примера создайте макет каталога таким образом:
.
├── Build.PL
├── README
└── script
└── abuscript.pl
на , говоря:
use 5.000;
use Module::Build qw();
Module::Build->new(
module_name => 'abuscript',
dist_version => '1.000',
dist_author => 'abubacker <abubacker@example.com>',
dist_abstract => 'describe what the script does in one sentence',
configure_requires => {
'perl' => '5.000',
},
requires => {
'JSON::Any' => 0,
},
)->create_build_script;
изменить данные в поставьте свои цели.
на README
файл, поместите некоторые инструкции по установке, например:
To install this module, run the following commands:
perl Build.PL
./Build install
как только вы закончите со всем этим, вы запустите:
perl Build.PL
./Build manifest
./Build dist
в результате .tar.gz
архиве, который вы будете распространять. Скажите своим пользователям установить его как любой другой модуль CPAN, или если они не знают, что это значит, они должны прочитать README.
если у вас есть время, я рекомендую преобразовать ваш скрипт в модуль. Программа pl2pm (поставляется с Perl) и модулем CPAN модуль-стартер-PBP помочь вам.
если лицензия позволяет, можно загрузить код в CPAN, чтобы сделать его еще более удобным для ваших пользователей. Сначала обратитесь за помощью в любое из следующих мест: список рассылкиmodule-authors@perl.org, веб-форум PerlMonks, IRC-канал #тулчейна на магнит (на IRC://IRC не.на Perl.орг/инструментария)
Что касается проверки доступности Perl, самый простой способ сделать это-проверить код возврата (код выхода) команды perl -v
,если это не 0
, У вас нет Perl.
Теперь относительно требований Perl, вы должны разберитесь с ними изнутри вашего скрипта Perl:
#!/usr/bin/env perl
use 5.006_001;
use ModuleName 2.0;
приведенный выше код Perl будет работать только с perl 5.6.1 или новее и с моделью "ModuleName" версии 2.0 или новее. нет необходимости вручную проверять Perl версия от bash, лучше и проще сделать это непосредственно из скрипта Perl.
ссылки: