The current working directory in Perl should be retrieved using Cwd, not
$ENV{PWD}. Regardless, putting paths in your program based on CWD is a bug,
since the program could be run with any CWD and that should not change its
behavior. I wrote a similar module to the FindBin interface using the same
method as lib::relative for creating arbitrary file paths relative to the
current file: https://metacpan.org/pod/Path::ThisWith an up to date Mojolicious, curfile can of course solve both these problems. -Dan On Fri, Apr 30, 2021 at 10:50 AM [email protected] <[email protected]> wrote: > Thanks to both of you, I managed to get past loading modules while > starting the service from systemd. Now there is another bug regarding > relative paths and I wonder how to solve it, it seems lib::relative might > not do the trick > > my $homedir = $ENV{'HOME'}; > my $cwd = $ENV{'PWD'}; > my $log = Mojo::Log->new(path => $cwd . '/log/ccdapi.log', level => > 'info'); > > Use of uninitialized value $cwd in concatenation (.) or string at > /srv/ccdapi/VM01/PROD/v1/ccdapi.pl line 21. > Apr 29 16:16:19 vl-vm-sr824.lb ccdapi[65656]: Can't load application from > file "/srv/ccdapi/VM01/PROD/v1/ccdapi.pl": Can't open file > "/log/ccdapi.log": No such file or directory at > /srv/ccdapi/.perlbrew/libs/perl-5.24.0@ccd > Apr 29 16:16:19 vl-vm-sr824.lb ccdapi[65656]: Compilation failed in > require at (eval 81) line 1. > > Cheers ! > > On Thursday, 29 April 2021 at 14:26:01 UTC-4 dim0xff wrote: > >> Here is my Service with perlbrew >> [Service] >> Type=forking >> User=backend >> Group=backend >> WorkingDirectory=/home/backend/app >> Environment=PERLBREW_ROOT=/home/backend/perl5/perlbrew >> ExecStart=/home/backend/perl5/perlbrew/bin/perlbrew exec -q --with >> perl-5.28.0 hypnotoad /home/backend/app/app_backend.pl >> ... >> >> >> Here is perlbrew info: >> $ > perlbrew info >> Current perl: >> Name: perl-5.28.0 >> Path: /home/backend/perl5/perlbrew/perls/perl-5.28.0/bin/perl >> Config: -de -Dprefix=/home/backend/perl5/perlbrew/perls/perl-5.28.0 >> -Aeval:scriptdir=/home/backend/perl5/perlbrew/perls/perl-5.28.0/bin >> Compiled at: Jul 8 2018 23:47:31 >> >> perlbrew: >> version: 0.84 >> ENV: >> PERLBREW_ROOT: /home/backend/perl5/perlbrew >> PERLBREW_HOME: /home/backend/.perlbrew >> PERLBREW_PATH: >> /home/backend/perl5/perlbrew/bin:/home/backend/perl5/perlbrew/perls/perl-5.28.0/bin >> >> PERLBREW_MANPATH: /home/backend/perl5/perlbrew/perls/perl-5.28.0/man >> >> >> On Thu, 29 Apr 2021 at 00:28, [email protected] <[email protected]> >> wrote: >> > >> > Hi, I'm trying to register my hypnotoad daemon as a service in >> > >> > cat /lib/systemd/system/ccdapi.service >> > [Unit] >> > Description=MY CCDAPI LAB >> > Requires=network.target >> > After=network.target >> > User=ccdapi >> > Group=ccdapi >> > # put here other service requirements >> > >> > [Service] >> > User=ccdapi >> > Group=ccdapi >> > Type=simple >> > Restart=always >> > SyslogIdentifier=ccdapi >> > PIDFile=/home/srv/ccdapi/v1/etc/ccdapi.pid >> > ExecStart=/srv/ccdapi/.perlbrew/libs/perl-5.24.0@ccdapi/bin/hypnotoad >> /srv/ccdapi/VM01/PROD/v1/ccdapi.pl -f >> > ExecStop=/srv/ccdapi/.perlbrew/libs/perl-5.24.0@ccdapi/bin/hypnotoad >> -s /srv/ccdapi/VM01/PROD/v1/ccdapi.pl >> > ExecReload=/srv/ccdapi/.perlbrew/libs/perl-5.24.0@ccdapi/bin/hypnotoad >> /srv/ccdapi/VM01/PROD/v1/ccdapi.pl >> > KillMode=process >> > WorkingDirectory=/srv/ccdapi >> > >> > [Install] >> > WantedBy=multi.user.target >> > >> > When I try to start the service I get >> > >> > -- Unit ccdapi.service has begun starting up. >> > Apr 28 16:41:48 vl-vm-sr824.lb.videotron.ca ccdapi[63200]: Can't >> locate Mojo/Base.pm in @INC (you may need to install the Mojo::Base module) >> (@INC contains: >> /srv/ccdapi/perl5/perlbrew/perls/perl-5.24.0/lib/site_perl/5.24.0/x86_64-linux >> >> > Apr 28 16:41:48 vl-vm-sr824.lb.videotron.ca ccdapi[63200]: BEGIN >> failed--compilation aborted at >> /srv/ccdapi/.perlbrew/libs/perl-5.24.0@ccdapi/bin/hypnotoad >> line 2. >> > Apr 28 16:41:48 vl-vm-sr824.lb.videotron.ca systemd[1]: >> ccdapi.service: main process exited, code=exited, status=2/INVALIDARGUMENT >> > Apr 28 16:41:48 vl-vm-sr824.lb.videotron.ca ccdapi[63201]: Can't >> locate Mojo/Base.pm in @INC (you may need to install the Mojo::Base module) >> (@INC contains: >> /srv/ccdapi/perl5/perlbrew/perls/perl-5.24.0/lib/site_perl/5.24.0/x86_64-linux >> >> > Apr 28 16:41:48 vl-vm-sr824.lb.videotron.ca ccdapi[63201]: BEGIN >> failed--compilation aborted at >> /srv/ccdapi/.perlbrew/libs/perl-5.24.0@ccdapi/bin/hypnotoad >> line 2. >> > Apr 28 16:41:48 vl-vm-sr824.lb.videotron.ca systemd[1]: >> ccdapi.service: control process exited, code=exited status=2 >> > Apr 28 16:41:48 vl-vm-sr824.lb.videotron.ca systemd[1]: Unit >> ccdapi.service entered failed state. >> > Apr 28 16:41:48 vl-vm-sr824.lb.videotron.ca systemd[1]: ccdapi.service >> failed. >> > Apr 28 16:41:48 vl-vm-sr824.lb.videotron.ca systemd[1]: ccdapi.service >> holdoff time over, scheduling restart. >> > Apr 28 16:41:48 vl-vm-sr824.lb.videotron.ca systemd[1]: start request >> repeated too quickly for ccdapi.service >> > Apr 28 16:41:48 vl-vm-sr824.lb.videotron.ca systemd[1]: Failed to >> start MY CCDAPI LAB. >> > -- Subject: Unit ccdapi.service has failed >> > -- Defined-By: systemd >> > >> > >> > So I've double-checked Mojo::Base exists ... >> > >> > [ccdapi@vl-vm-sr824 ~]$ find . | grep 'Mojo.*Base.pm' >> > ./VM01/PROD/perl5/lib/perl5/Mojo/Base.pm >> > ./VM01/perl5/lib/perl5/Mojo/Base.pm >> > ./temp/report/bin/lib/Mojo/Base.pm >> > ./.cpan/build/Mojolicious-7.37-yGj97y/blib/lib/Mojo/Base.pm >> > ./.cpan/build/Mojolicious-7.37-yGj97y/lib/Mojo/Base.pm >> > ./.perlbrew/libs/perl-5.24.0@ccdapi/lib/perl5/Mojo/Base.pm >> > ./perl5/lib/perl5/Mojo/Base.pm >> > >> > >> > And I have added the path with "use lib qw(/my/path/) such as >> > >> > [ccdapi@vl-vm-sr824 ~]$ head ./VM01/PROD/v1/ccdapi.pl >> > use lib qw(/srv/ccdapi/perl5/lib/perl5/); >> > use Mojolicious::Lite; >> > >> > >> > But still it won't start. Can anyone help please ? I'm aware this seems >> like a general Perl problem though but not so sure what am I doing wrong or >> is there some sort of bug ?! >> > >> > Cheers, >> > Luc >> > >> > -- >> > You received this message because you are subscribed to the Google >> Groups "Mojolicious" group. >> > To unsubscribe from this group and stop receiving emails from it, send >> an email to [email protected]. >> > To view this discussion on the web visit >> https://groups.google.com/d/msgid/mojolicious/af5527ae-18eb-49ae-91b9-37a1d7fb7a43n%40googlegroups.com. >> >> >> >> >> -- >> //wbr, Dmitry L. >> > -- > You received this message because you are subscribed to the Google Groups > "Mojolicious" group. > To unsubscribe from this group and stop receiving emails from it, send an > email to [email protected]. > To view this discussion on the web visit > https://groups.google.com/d/msgid/mojolicious/dfcc1b3e-3255-449a-9735-9dfb685e92b8n%40googlegroups.com > <https://groups.google.com/d/msgid/mojolicious/dfcc1b3e-3255-449a-9735-9dfb685e92b8n%40googlegroups.com?utm_medium=email&utm_source=footer> > . > -- You received this message because you are subscribed to the Google Groups "Mojolicious" group. To unsubscribe from this group and stop receiving emails from it, send an email to [email protected]. To view this discussion on the web visit https://groups.google.com/d/msgid/mojolicious/CABMkAVUuchGw7sWqLgCVEymY%3DsXWPEuPHNW78u2OcTU_NyMzJg%40mail.gmail.com.
