Я работаю над приложением Perl, предназначенным для развертывания с использованием Module::Build
. Мне нужно установить несколько модулей через CPAN, потому что они недоступны через диспетчер пакетов Ubuntu - или, вернее, внутреннее зеркало apt-get, используемое всеми нашими серверами. Хотя на нашем сервере разработки все это хорошо и хорошо, ИТ (по понятным причинам) неохотно запускает код на производственных машинах, которые не кэшируются или не контролируются иным образом внутри компании.Как я могу упаковать свои зависимости приложения Perl для развертывания?
Поскольку в настоящее время у нас нет зеркала CPAN, это в основном означает, что мне нужно получить все эти модули, отличные от Ubuntu, в одном месте, чтобы они могли быть заархивированы и/или закреплены за контролем версий. Идеальным решением было бы проверить утилиту вне контроля источника, изменить пару конфигурационных переменных для баз данных и, возможно, запустить команду сборки/установки и сделать это. К счастью, сервер разработки - это клон производственного сервера, поэтому модули, использующие XS или другие специфичные для архитектуры функции, не должны вызывать проблемы.
Я думаю, что самый чистый способ справиться с этим будет проверять исходные файлы для модулей, которые мне нужны, и устанавливать Module::Build
, чтобы использовать их для разрешения своих зависимостей вместо поиска CPAN, но я не вижу возможности для этого. Является ли это чем-то выполнимым или существует другой способ объединить все модули, которые мне нужны для развертывания по существу в автономном режиме?
Вы посмотрели [App :: FatPacker ] (https://metacpan.org/pod/App::FatPacker)? –
Модуль :: Build не (последний раз проверял) самостоятельно определяет зависимости, он просто сообщает cpan (или cpanplus или cpanm), каковы они. и cpan может использовать файл url для поиска модулей. но подумайте о том, чтобы использовать что-то вроде Pinto. – ysth