Модули CPAN, установленные локально cpan/cpanm, не могут использоваться без ручного вмешательства
Я упаковал свое приложение как модуль Perl, который не удается установить с помощью cpan
или же cpanm
команды. Проблема заключается в том, что эти команды - когда они не запускаются с правами root - устанавливают необходимые модули в каталог ~/perl5. Однако мой каталог ~/perl5 не включен в @INC
Это приводит к следующему запутанному выводу из cpanm:
$ cpanm --installdeps .
--> Working on .
Configuring my-module-0.001 ... OK
==> Found dependencies: Image::Size
--> Working on Image::Size
Fetching http://www.cpan.org/authors/id/R/RJ/RJRAY/Image-Size-3.232.tar.gz ... OK
Configuring Image-Size-3.232 ... OK
Building and testing Image-Size-3.232 ... OK
Successfully installed Image-Size-3.232
! Installing the dependencies failed: Module 'Image::Size' is not installed
! Bailing out the installation for my-module-0.001.
1 distribution installed
Как вы можете видеть, он успешно загружает, тестирует и устанавливает модуль Image::Size, но затем пытается использовать его и терпит неудачу.
Я знаю, что могу решить эту проблему, установив переменную окружения $PERL5LIB равной "~/perl5/lib/perl5" и добавив "~/perl5/bin" в свой $PATH, но мне бы очень хотелось узнать, как возникла эта ситуация в первую очередь. Я хотел бы, чтобы инструкции по установке для пользователей моего приложения были как можно более простыми, и ручная модификация переменных среды - это не то, что я планирую им инструктировать.
2 ответа
Если вы используете bash, вы можете установить local:: lib и добавить что-то подобное в ваш файл.bashrc.
# adds $HOME/perl5/bin to PATH
[ $SHLVL -eq 1 ] && eval "$(perl -I$HOME/perl5/lib/perl5 -Mlocal::lib)"
Это должно решить вашу проблему. Проблема заключается в том, как настроена ваша локальная система, поэтому настройте ее вместо того, чтобы вносить Dist:: Zilla в смесь, где она не требуется.
Вот мое собственное решение проблемы. Я переключился на Dist::Zilla и предложил пользователям следующие инструкции по установке:
Installation instructions
=========================
To install this program you need Dist::Zilla, which can be installed
by running the following command as root:
cpan Dist::Zilla
After that, make sure you're in directory where this INSTALL file is,
and run the following command as root:
dzil install