Я изучаю, как упаковать некоторые из моих Perl-приложений и лучше управлять их зависимостями, чтобы упростить распространение для меня и моих клиентов, что, скорее всего, вообще не включает загрузку в CPAN.Вместо этого я бы предоставил пользовательские репозитории в случае необходимости или, что более вероятно, доступ к SCM, таким как Subversion.
CPAN :: Meta :: Spec , кажется, предоставляет то, что мне нужно для описания моих приложений,их зависимости и даже откуда их взять, но меня интересует уровень детализации предпосылок. Спецификация содержит следующее предложение:
Набор отношений должен быть указан как Карта имен пакетов в диапазонах версий.
Требование пакетовкажется, слишком низкий уровень для моих нужд, я бы предпочел вместо этого требовать дистрибутивов.Практически все инструменты уровня (как я понимаю), такие как Maven и Gradle, работают, например, Apache Commons Lang против Apache Commons IO и т. Д., А не отдельные классы, такие как org.apache.commons.lang3.AnnotationUtils
или org.apache.commons.io.ByteOrderMark
.OTOH, пример в документации содержит следующие строки:
requires => {
'perl' => '5.006',
'File::Spec' => '0.86',
'JSON' => '2.16',
},
Строка, содержащая perl
, не выглядит для меня как пакет, и я не нашел несколько package perl
или perl.pm
где-нибудь в моей системе.Мне кажется, что это обрабатывается по-другому, чем другие примеры.
У меня есть общесистемная папка, содержащая, например, некоторые пакеты утилит, которые мне кажутся сопоставимыми с некоторыми абстрактными perl
.Эта папка должна быть определена как один дистрибутив, поддерживать номер версии для всех пакетов в этой папке и, следовательно, должна позволять другим приложениям require
все это.Если я правильно понимаю документы, мне нужно будет создать не только META.yml
в папке, но и дополнительно, например, sysutils.pm
, содержащий package sysutils;
и определить некоторую версию.
Есть ли какие-тоспособ избежать создания этого файла и на самом деле require
только самого дистрибутива?
* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * META.yml
уже содержит собственное имя и версию, так что выглядит как абстрактная вещь, которую можно require
теоретически.Я не вижу необходимости в добавлении .pm
-файла, представляющего сам дистрибутив, только чтобы require
работал.В моем случае это не содержало бы никакой бизнес-логики.
Спасибо!