[Bucardo-general] Strange Bug with multiple Perl in MacOS X

rivantsiv+bucardo at gmail.com rivantsiv+bucardo at gmail.com
Tue May 29 13:17:56 UTC 2012


Let me explain the situation:

I installed MacPorts package on MacOS X Lion, together with perl5.12.
MacPorts successfully modified all export PATHes, so when you type
perl -V it shows following @INC:

    @INC:
    /opt/local/lib/perl5/site_perl/5.12.4/darwin-multi-2level
    /opt/local/lib/perl5/site_perl/5.12.4
    /opt/local/lib/perl5/vendor_perl/5.12.4/darwin-multi-2level
    /opt/local/lib/perl5/vendor_perl/5.12.4
    /opt/local/lib/perl5/5.12.4/darwin-multi-2level
    /opt/local/lib/perl5/5.12.4
    /opt/local/lib/perl5/site_perl
    /opt/local/lib/perl5/vendor_perl/5.12.3/darwin-multi-2level
    /opt/local/lib/perl5/vendor_perl/5.12.3
    /opt/local/lib/perl5/vendor_perl
    .

Because  Bucardo  script  is started with #!/bin/usr/env perl, it also
successfully  picks  up  the  right verion of perl

I installed all required packages, INCLUDING DBD::Pg to the new @INC,
perl -MDBD::Pg -e 1 shows module is installed.


But  then  I have a strange bug, happening in Bucardo, and it concerns
only DBD::Pg module:


bash-3.2#  bucardo add table public.LocationFacilities db=local herd=localherd standard_conflict=target

DBD::Pg::st execute failed: ERROR:  install_driver(Pg) failed: Can't locate DBD/Pg.pm in @INC (@INC contains: /Library/Perl/5.12/darwin-thread-multi-2level
/Library/Perl/5.12 /Network/Library/Perl/5.12/darwin-thread-multi-2level /Network/Library/Perl/5.12 /Library/Perl/Updates/5.12.3/darwin-thread-multi-2level
/Library/Perl/Updates/5.12.3 /System/Library/Perl/5.12/darwin-thread-multi-2level /System/Library/Perl/5.12
/System/Library/Perl/Extras/5.12/darwin-thread-multi-2level /System/Library/Perl/Extras/5.12 .) at line 3.
Perhaps the DBD::Pg perl module hasn't been fully installed,
or perhaps the capitalisation of 'Pg' isn't right.
Available drivers: DBM, ExampleP, File, Gofer, Proxy, SQLite, Sponge.
 at line 62
CONTEXT:  PL/Perl function "validate_goat" at /opt/local/bin/bucardo line 4637.

As  you  see, for some reason it searches in old @INC (the @INC of the
default perl installed in MacOS).

Failing line is

$sth = $dbh->prepare(SQL)
--> ($count = $sth->execute(@args)) =~ s/0E0/0/;
debug(qq{Added "$schema.$table" to goat table with db "$db", count was
$count});

All other modules in "use XXXX" are loading just fine.







More information about the Bucardo-general mailing list