?

Log in

No account? Create an account
Предыдущий пост Поделиться Следующий пост
Картину, корзину, картонку
Рыжий
shoorick
Если в целях переносимости хранить перловые модули рядом со своим кодом — будет не очень хорошо. Если при этом ещё и своих собственных модулей наберётся не один десяток (я такой винегрет встречал) — совсем плохо. Вывод — надо разделять.

Один из вариантов — использовать carton. Для тех, кому лень читать по-английски, есть перевод — статья Вячеслава Тихановского «Локальная установка и использование Perl-модулей» из журнала Pragmatic Perl за 2014 год.

Дерево каталогов

Carton берёт список модулей, ставит их локально (root не нужен) вместе с зависимостями и позволяет запускать приложения с таким вот набором модулей. Список используемых модулей (если carton ещё ничего не ставил) можно достать из скриптов и своих модулей:
find . -type f -name \*p\[lm\] -exec egrep -n '^use ' '' ';' \
 | cut -d' ' -f 2 | sort -u

Чтоб указать необходимость установки какого-нибудь Module::Name, достаточно добавить в файл cpanfile строку
requires 'Module::Name';

Carton умеет ставить нужные версии модулей, однако в документации этот момент вскользь упомянут, но не описан должным образом. Если захотеть, например, поставить старую версию модуля Sphinx::Search (это потребуется, если сам Сфинкс не новый) и написать
requires 'Sphinx::Search', '0.28';

то вместо желаемой версии будет установлена свежая (0.31 по состоянию на март 2018) — похоже, такая запись указывает минимально допустимую версию. Если поменять код на
requires 'Sphinx::Search', '== 0.28';

и снова выполнить carton install, версия поменяется
Installing modules using /home/.../cpanfile
Successfully installed Sphinx-Search-0.28 (downgraded from 0.31)
1 distribution installed


Команда carton exec может пригодиться для запуска не только самого́ приложения, но и чего-нибудь ещё:
carton exec prove -l


http://shoorick.ru/2018/03/10/carton/

Записи из этого журнала по тегу «perl»

  • Надо ругаться в боевом режиме

    В состав перлового микрофреймворка Mojolicious::Lite входит класс Mojo::Log, который не просто пишет сообщения в лог, а ещё и учитывает важность…

  • Вместо себя

    Есть ненулевая вероятность того, что приближающийся 2019 год будет для моей семьи не таким, как сейчас и я в силу разных причин не смогу быть там,…

  • Больше перловой документации!

    Документация по языку Perl и его модулям теперь доступна и на  perldoc.pl, только оно без прокси не работает, ибо заблокировано роскомпозором.…

  • Инструменты разные — методы похожие

    Попробовал решить одну из рабочих задач, применив нелюбимый язык PHP в комплекте с современными инструментами — получилось близко к тому, что делал…

  • Склоняем точнее

    Мы стали более лучше одеваться ^W^W^W правильнее склонять имена с фамилиями. Вчера вышла свежая версия предназначенного для этого перлового модуля…

  • Почти что Перл с Апачем

    Новости географии: в одном люксембургском углу находится никому не известная деревня Шенген, ближайшая к ней железнодорожная платформа, буквально на…

  • Дорогой язык

    Вышел отчёт по собранным Мойкругом зарплатам на середину 2018 года — https://vc.ru/flood/43849-zarplaty-it-specialistov-na-seredinu-2018-goda В…

  • Тестирование перловых mojolicious-приложений в Geany

    Программировать, используя какую-нибудь могучую интегрированную среду разработки (IDE) — хорошо и зачастую удобно: там «из коробки» могут…

  • Сфинкс спрятался? Сделаем туннель, но ненадолго

    Ситуация: жил-был Сфинкс ( поисковая система Sphinx) на старом сервере, да пришла пора на новый переезжать. Нужный порт на новом месте доступен…