Send netdisco-users mailing list submissions to
netdisco-users@lists.sourceforge.net
To subscribe or unsubscribe via the World Wide Web, visit
https://lists.sourceforge.net/lists/listinfo/netdisco-users
or, via email, send a message with subject or body 'help' to
netdisco-users-requ...@lists.sourceforge.net
You can reach the person managing the list at
netdisco-users-ow...@lists.sourceforge.net
When replying, please edit your Subject line so it is more specific
than "Re: Contents of netdisco-users digest..."
Today's Topics:
1. Re: undefined symbol: PL_current_contex (Christian Ramseyer)
2. Re: undefined symbol: PL_current_contex (Oliver Gorwits)
--- Begin Message ---
Hi
2023-12-12T04:24:33.922371-08:00 ganesh netdisco-daemon[51448]: Can't locate
Path/Class.pm in @INC (you may need to install the Path::Class module) (@INC
contains: /usr/local/lib64/perl5/5.32 /usr/local/share/perl5/5.32
/usr/lib64/perl5/vendor_perl /usr/share/perl5/vendor_perl /usr/lib64/perl5
/usr/share/perl5) at /home/netdisco/perl5/bin/netdisco-backend line 31.
2023-12-12T04:24:33.922371-08:00 ganesh netdisco-daemon[51448]: BEGIN
failed--compilation aborted at /home/netdisco/perl5/bin/netdisco-backend line
31.
2023-12-12T04:24:33.923416-08:00 ganesh systemd[1]: netdisco-daemon.service:
Control process exited, code=exited, status=2/INVALIDARGUMENT
2023-12-12T04:24:33.923650-08:00 ganesh systemd[1]: netdisco-daemon.service:
Failed with result 'exit-code'.
==> So why isn't /usr/bin/perl finding Path::Class.pm?
[netdisco@ganesh perl5]$ pwd
/home/netdisco/perl5
[netdisco@ganesh perl5]$ find . | grep Path | grep Class.pm
./lib/perl5/Path/Class.pm
[netdisco@ganesh perl5]$
==> Ahh, well, /usr/bin/perl isn't finding Path/Class.pm because @INC doesn't
include /home/netops/perl5 ....
==> OK, I think I'm fuzzy on how to include library paths for perl ... does any
of the above spark an insight from you around what I am missing?
We're getting closer :)
In theory all the binaries like netdisco-web have some setup code to
arrange the environment, e.g:
head -50 perl5/bin/netdisco-web
#!/usr/bin/env perl
use strict;
use warnings;
our $home;
BEGIN {
use FindBin;
FindBin::again();
my $me = File::Spec->catfile($FindBin::RealBin, $FindBin::RealScript);
my $uid = (stat($me))[4] || 0;
$home = ($ENV{NETDISCO_HOME} || (getpwuid($uid))[7] || $ENV{HOME});
# try to find a localenv if one isn't already in place.
if (!exists $ENV{PERL_LOCAL_LIB_ROOT}) {
use File::Spec;
my $localenv = File::Spec->catfile($FindBin::Bin, 'localenv');
exec($localenv, $0, @ARGV) if -f $localenv;
$localenv = File::Spec->catfile($home, 'perl5', 'bin', 'localenv');
exec($localenv, $0, @ARGV) if -f $localenv;
die "Sorry, can't find libs required for App::Netdisco.\n"
if !exists $ENV{PERLBREW_PERL};
}
}
BEGIN {
use Path::Class;
# stuff useful locations into @INC and $PATH
unshift @INC,
dir($FindBin::RealBin)->parent->subdir('lib')->stringify,
dir($FindBin::RealBin, 'lib')->stringify;
use Config;
$ENV{PATH} = $FindBin::RealBin . $Config{path_sep} . $ENV{PATH};
}
But that seems to not work out in your case. The most direct way to tell
Perl where the libraries are is via
PERLLIB=/home/netdisco/perl5/lib:/home/netdisco/perl5/lib/perl5:/home/netdisco/perl5/lib/perl5/x86_64-linux-thread-multi
Maybe set NETDISCO_HOME in the systemd unit as well. The
PERL_LOCAL_LIB_ROOT should be /home/netdisco/perl5(/lib maybe) if
anything, but I have this generally unset IIRC.
Cheers
Christian
--sk
-----Original Message-----
From: Christian Ramseyer <ramse...@netnea.com>
Sent: Monday, December 11, 2023 4:23 PM
To: netdisco-users@lists.sourceforge.net; Stuart Kendrick
<stua...@alleninstitute.org>
Subject: Re: [Netdisco] undefined symbol: PL_current_contex
CAUTION: This email originated from outside the Allen Institute. Please do not
click links or open attachments unless you've validated the sender and know the
content is safe.
________________________________
Hi
On 11.12.2023 21:24, Stuart Kendrick wrote:
Hi folks,
BRIEF
* I have NetDisco running on an old CentOS 7.9 box; I have built a new
Rocky 9.3 and am attempting to install NetDisco there
Can't load
'/home/netdisco/perl5/lib/perl5/x86_64-linux-thread-multi/auto/YAML/XS
/LibYAML/LibYAML.so' for module
YAML::XS::LibYAML:/home/netdisco/perl5/lib/perl5/x86_64-linux-thread-m
ulti/auto/YAML/XS/LibYAML/LibYAML.so: undefined symbol:
PL_current_contex
DETAIL
[netdisco@new-server LibYAML]$ strings LibYAML.so | grep PL_current
PL_current_context
PL_current_context
Your error says contex while the .so has contex*t*, copy/paste mishap or is
that really the output?
To make matters worse, the LibYAML.so I quickly checked in a fresh docker image
(aarch64, unfortuntately I can't run x86_64 right now) doesn't have this string
at all:
docker run --rm -it rockylinux:9.3 bash
... doing the App::Netdisco install, until after the cpanm step
[root@a687675a099c perl5]# find . -name LibYAML.so
./lib/perl5/aarch64-linux-thread-multi/auto/YAML/XS/LibYAML/LibYAML.so
[root@a687675a099c perl5]# strings
./lib/perl5/aarch64-linux-thread-multi/auto/YAML/XS/LibYAML/LibYAML.so | grep
-i PL_curr || echo crickets....
crickets....
I checked another LibYAML.so on Suse x86_64 and that also doesn't have it.
Getting weird :)
Maybe try reinstalling the module with -v and running the tests, see if that
works or there are errors already there?
[root@a687675a099c perl5]# ./bin/cpanm --reinstall -v YAML::XS
You can also show which version of libyaml is used, but it seems to ship with
the CPAN package so unlikely to get a surprise there:
[root@a687675a099c perl5]#
PERLLIB=./lib/perl5/:./lib/perl5/aarch64-linux-thread-multi perl -MYAML::XS -E
'say YAML::XS::LibYAML::libyaml_version();'
0.2.4
Is this a completely fresh install or did you restore any parts from a backup
or upgrade from an older Rocky snapshot?
Cheers
Christian
--
Christian Ramseyer, netnea ag
Network Management. Security. OpenSource.
https://www.netnea.com
Phone: +41 79 644 77 64
--- End Message ---
--- Begin Message ---
Noting that I see both /home/netops and /home/netdisco in the logs there,
so perhaps it's mixed up?
regards
Oliver.
On Tue, 12 Dec 2023 at 18:34, Christian Ramseyer <ramse...@netnea.com>
wrote:
> Hi
>
>
> >
> > 2023-12-12T04:24:33.922371-08:00 ganesh netdisco-daemon[51448]: Can't
> locate Path/Class.pm in @INC (you may need to install the Path::Class
> module) (@INC contains: /usr/local/lib64/perl5/5.32
> /usr/local/share/perl5/5.32 /usr/lib64/perl5/vendor_perl
> /usr/share/perl5/vendor_perl /usr/lib64/perl5 /usr/share/perl5) at
> /home/netdisco/perl5/bin/netdisco-backend line 31.
> > 2023-12-12T04:24:33.922371-08:00 ganesh netdisco-daemon[51448]: BEGIN
> failed--compilation aborted at /home/netdisco/perl5/bin/netdisco-backend
> line 31.
> > 2023-12-12T04:24:33.923416-08:00 ganesh systemd[1]:
> netdisco-daemon.service: Control process exited, code=exited,
> status=2/INVALIDARGUMENT
> > 2023-12-12T04:24:33.923650-08:00 ganesh systemd[1]:
> netdisco-daemon.service: Failed with result 'exit-code'.
> >
> > ==> So why isn't /usr/bin/perl finding Path::Class.pm?
> >
> > [netdisco@ganesh perl5]$ pwd
> > /home/netdisco/perl5
> > [netdisco@ganesh perl5]$ find . | grep Path | grep Class.pm
> > ./lib/perl5/Path/Class.pm
> > [netdisco@ganesh perl5]$
> >
> > ==> Ahh, well, /usr/bin/perl isn't finding Path/Class.pm because @INC
> doesn't include /home/netops/perl5 ....
> >
> > ==> OK, I think I'm fuzzy on how to include library paths for perl ...
> does any of the above spark an insight from you around what I am missing?
>
> We're getting closer :)
>
> In theory all the binaries like netdisco-web have some setup code to
> arrange the environment, e.g:
>
> head -50 perl5/bin/netdisco-web
> #!/usr/bin/env perl
>
> use strict;
> use warnings;
>
> our $home;
>
> BEGIN {
> use FindBin;
> FindBin::again();
>
> my $me = File::Spec->catfile($FindBin::RealBin, $FindBin::RealScript);
> my $uid = (stat($me))[4] || 0;
>
> $home = ($ENV{NETDISCO_HOME} || (getpwuid($uid))[7] || $ENV{HOME});
>
> # try to find a localenv if one isn't already in place.
> if (!exists $ENV{PERL_LOCAL_LIB_ROOT}) {
> use File::Spec;
> my $localenv = File::Spec->catfile($FindBin::Bin, 'localenv');
> exec($localenv, $0, @ARGV) if -f $localenv;
> $localenv = File::Spec->catfile($home, 'perl5', 'bin', 'localenv');
> exec($localenv, $0, @ARGV) if -f $localenv;
>
> die "Sorry, can't find libs required for App::Netdisco.\n"
> if !exists $ENV{PERLBREW_PERL};
> }
> }
>
> BEGIN {
> use Path::Class;
>
> # stuff useful locations into @INC and $PATH
> unshift @INC,
> dir($FindBin::RealBin)->parent->subdir('lib')->stringify,
> dir($FindBin::RealBin, 'lib')->stringify;
>
> use Config;
> $ENV{PATH} = $FindBin::RealBin . $Config{path_sep} . $ENV{PATH};
> }
>
>
> But that seems to not work out in your case. The most direct way to tell
> Perl where the libraries are is via
>
>
> PERLLIB=/home/netdisco/perl5/lib:/home/netdisco/perl5/lib/perl5:/home/netdisco/perl5/lib/perl5/x86_64-linux-thread-multi
>
> Maybe set NETDISCO_HOME in the systemd unit as well. The
> PERL_LOCAL_LIB_ROOT should be /home/netdisco/perl5(/lib maybe) if
> anything, but I have this generally unset IIRC.
>
> Cheers
> Christian
>
>
>
>
> >
> > --sk
> >
> > -----Original Message-----
> > From: Christian Ramseyer <ramse...@netnea.com>
> > Sent: Monday, December 11, 2023 4:23 PM
> > To: netdisco-users@lists.sourceforge.net; Stuart Kendrick <
> stua...@alleninstitute.org>
> > Subject: Re: [Netdisco] undefined symbol: PL_current_contex
> >
> > CAUTION: This email originated from outside the Allen Institute. Please
> do not click links or open attachments unless you've validated the sender
> and know the content is safe.
> > ________________________________
> >
> > Hi
> >
> > On 11.12.2023 21:24, Stuart Kendrick wrote:
> >> Hi folks,
> >>
> >> BRIEF
> >>
> >> * I have NetDisco running on an old CentOS 7.9 box; I have built a
> new
> >> Rocky 9.3 and am attempting to install NetDisco there
> >>
> >> Can't load
> >> '/home/netdisco/perl5/lib/perl5/x86_64-linux-thread-multi/auto/YAML/XS
> >> /LibYAML/LibYAML.so' for module
> >> YAML::XS::LibYAML:/home/netdisco/perl5/lib/perl5/x86_64-linux-thread-m
> >> ulti/auto/YAML/XS/LibYAML/LibYAML.so: undefined symbol:
> >> PL_current_contex
> >>
> >> DETAIL
> >
> >> [netdisco@new-server LibYAML]$ strings LibYAML.so | grep PL_current
> >>
> >> PL_current_context
> >>
> >> PL_current_context
> >
> > Your error says contex while the .so has contex*t*, copy/paste mishap or
> is that really the output?
> >
> >
> > To make matters worse, the LibYAML.so I quickly checked in a fresh
> docker image (aarch64, unfortuntately I can't run x86_64 right now) doesn't
> have this string at all:
> >
> > docker run --rm -it rockylinux:9.3 bash
> >
> > ... doing the App::Netdisco install, until after the cpanm step
> >
> > [root@a687675a099c perl5]# find . -name LibYAML.so
> ./lib/perl5/aarch64-linux-thread-multi/auto/YAML/XS/LibYAML/LibYAML.so
> >
> > [root@a687675a099c perl5]# strings
> > ./lib/perl5/aarch64-linux-thread-multi/auto/YAML/XS/LibYAML/LibYAML.so |
> grep -i PL_curr || echo crickets....
> >
> > crickets....
> >
> > I checked another LibYAML.so on Suse x86_64 and that also doesn't have
> it. Getting weird :)
> >
> > Maybe try reinstalling the module with -v and running the tests, see if
> that works or there are errors already there?
> >
> > [root@a687675a099c perl5]# ./bin/cpanm --reinstall -v YAML::XS
> >
> > You can also show which version of libyaml is used, but it seems to ship
> with the CPAN package so unlikely to get a surprise there:
> >
> > [root@a687675a099c perl5]#
> > PERLLIB=./lib/perl5/:./lib/perl5/aarch64-linux-thread-multi perl
> -MYAML::XS -E 'say YAML::XS::LibYAML::libyaml_version();'
> >
> > 0.2.4
> >
> > Is this a completely fresh install or did you restore any parts from a
> backup or upgrade from an older Rocky snapshot?
> >
> > Cheers
> > Christian
>
> --
> Christian Ramseyer, netnea ag
> Network Management. Security. OpenSource.
> https://www.netnea.com
> Phone: +41 79 644 77 64
>
>
> _______________________________________________
> Netdisco mailing list
> netdisco-users@lists.sourceforge.net
> https://sourceforge.net/p/netdisco/mailman/netdisco-users/
>
>
--- End Message ---
_______________________________________________
Netdisco mailing list - Digest Mode
netdisco-users@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/netdisco-users