ports/137694: lang/perl5.10 and lang/perl5.8 -- Embedded perl fails after libtool/libltdl upgrade
hasenfuss at rz.tu-clausthal.de
Wed Aug 12 12:00:21 UTC 2009
>Synopsis: lang/perl5.10 and lang/perl5.8 -- Embedded perl fails after libtool/libltdl upgrade
>Arrival-Date: Wed Aug 12 12:00:17 UTC 2009
>Originator: Alexander Hasenfuss
Clausthal University of Technology
FreeBSD schluesselmeister-vm.rz.tu-clausthal.de 7.2-RELEASE-p3 FreeBSD 7.2-RELEASE-p3 #0: Thu Jul 30 09:27:38 CEST 2009 root at teufelchen.rz.tu-clausthal.de:/usr/obj/usr/src/sys/TEUFELCHEN i386
We were facing the problem when installing the port net/freeradius2 with perl
module. The port maintainer was able to reproduce the problem. FreeRADIUS just
uses the interface described in perlembed(1), so it seems not to be a freeradius
- Update ports to latest version (we use the base system FreeBSD
- Follow the steps in "/usr/ports/UPDATING" to update to the new libtool
- Install net/freeradius2 from scratch with perl support (problem seems
to exist with both perl 5.10 and 5.8). All of following steps use the
sample configuration that comes with the FreeRADIUS distribution.
- Go to "/usr/local/etc/raddb/sites-enabled" and edit "inner-tunnel".
Add "perl" to the "authorize" section (e.g. right underneath the line
is a good place).
- Run "radiusd -X".
This will produce the error message.
>The problem is clearly with dynamic linkage of the Data::Dumper module -
>though this module seems to work in a quick Perl program outside FreeRADIUS,
>so the problem only happens when Perl is embedded.
>The problem is similar to that described at
>(this is embedding Perl in Python)
>It appears that calls to dlopen made via rlm_perl may need " | RTLD_GLOBAL"
>adding to the 'mode' argument (see the man page for dlopen(3)). However, that
>system call is not made directly in rlm_perl - all that rlm_perl does is use
>the interface found in the perlembed(1) man page.
Here is the error message after starting "radiusd -X":
Module: Linked to module rlm_perl
Module: Instantiating perl
module = "/usr/local/etc/raddb/example.pl"
func_authorize = "authorize"
func_authenticate = "authenticate"
func_accounting = "accounting"
func_preacct = "preacct"
func_checksimul = "checksimul"
func_detach = "detach"
func_xlat = "xlat"
func_pre_proxy = "pre_proxy"
func_post_proxy = "post_proxy"
func_post_auth = "post_auth"
Can't load '/usr/local/lib/perl5/5.10.0/mach/auto/Data/Dumper/Dumper.so'
for module Data::Dumper:
symbol "Perl_sv_cmp" at /usr/local/lib/perl5/5.10.0/mach/XSLoader.pm
at /usr/local/lib/perl5/5.10.0/mach/Data/Dumper.pm line 36
Compilation failed in require at /usr/local/etc/raddb/example.pl line 30.
BEGIN failed--compilation aborted at /usr/local/etc/raddb/example.pl
rlm_perl: perl_parse failed: /usr/local/etc/raddb/example.pl not found
or has syntax errors.
/usr/local/etc/raddb/modules/perl: Instantiation failed for module
/usr/local/etc/raddb/sites-enabled/inner-tunnel: Failed to find
/usr/local/etc/raddb/sites-enabled/inner-tunnel: Errors parsing
Errors initializing modules
Rebuilding perl and freeradius doesn't fix the problem.
More information about the freebsd-ports-bugs