Perl Не удается найти дайджест / SHA1.pm в @ IN C ошибка - PullRequest
1 голос
/ 05 августа 2020

Я новичок в perl, и у меня проблемы. Я использую mojolicious как фреймворк. У меня возникают ошибки при попытке импортировать модуль.

$self->plugin('SessionStore' => Plack::Session::Store::File->new(dir => $session_dir)); 

Файл State.pm импортирует use Digest::SHA(); Я получаю сообщение об ошибке при импорте. Каталог Digest должен находиться в том же каталоге, что и Plack Plack находится в /usr/share/perl5/, но Digest находится в другом месте /usr/lib/x86_64-linux-gnu/perl5/5.26/, они оба должны находиться в одном месте? Я видел, где пользователи используют use lib 'path to modules', однако это модуль perl, который я не создавал, поэтому я не думаю, что это хорошая идея. Фактические сообщения об ошибке:

Can't load application from file "/web/applications/perlwebapp/script/startapp":
Can't locate Digest/SHA1.pm in
@INC (you may need to install the Digest::SHA1 module)
(@INC contains: /web/applications/perlwebapp/script/../lib /etc/perl
/usr/local/lib/x86_64-linux-gnu/perl/5.26.1
/usr/local/share/perl/5.26.1
/usr/lib/x86_64-linux-gnu/perl5/5.26
/usr/share/perl5
/usr/lib/x86_64-linux-gnu/perl/5.26
/usr/share/perl/5.26
/usr/local/lib/site_perl
/usr/lib/x86_64-linux-gnu/perl-base

Странная проблема: /usr/lib/x86_64-linux-gnu/perl5/5.26/ находится в @INC, но модуль в /usr/share/perl5 не видит его. Если я создам сценарий perl, я могу use Digest::SHA();

мой служебный файл.

[Service]
Type=forking
User=web
Group=web
#Environment=PERL5LIB=/usr/lib/x86_64-linux-gnu/perl5/5.26/
Environment=PERL5LIB=/usr/share/perl5/
UMask=007
ExecStart=/web/applications/perlwebapp/local/bin/hypnotoad /web/applications/perlwebapp/script/runapp
ExecReload=/web/applications/perlwebapp/local/bin/hypnotoad /web/applications/perlwebapp/script/runapp
ExecStop=/web/applications/perlwebapp/local/bin/hypnotoad --stop /web/applications/perlwebapp/script/runapp
PIDFile=/web/applications/perlwebapp/script/hypnotoad.pid
TimeoutStopSec=5
KillMode=mixed

Код приложения:

unless (-d $session_dir){
   make_path($session_dir, {mode => oct("0770")});
 }
$self->plugin('Config');
$self->plugin('RenderFile');
$self->plugin('SessionStore' => Plack::Session::Store::File->new(dir => $session_dir));
validation_checks($self->validator);
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...