1819681 Members
3639 Online
109605 Solutions
New Discussion

perl DBD::Sybase

 
Doug O'Leary
Honored Contributor

perl DBD::Sybase

Hey;

Initial caveat: I know enough about oracle to be really dangerous and annoying to real dbas. I know absolutely nothing about Sybase.

That being said, I'm trying to install the DBD::Sybase module for some users. I'm using the perl -MCPAN module to do that.

Taking my clue from the oracle, I sourced the sybase environment variables. It looks like the compile went ok; at least I can't see any errors listed in there.

The make tests failed miserably, however.

Running make test
PERL_DL_NONLAZY=1 /opt/perl/bin/perl "-MExtUtils::Command::MM" "-e" "test_harness(0, 'blib/lib', 'blib/arch')" t/*.t
t/autocommit....ok 1/9Can't make loaded symbols global on this platform while loading blib/arch/auto/DBD/Sybase/Sybase.sl at /opt/perl/lib/5.8.6/PA-RISC2.0/DynaLoader.pm line 230.
/usr/lib/dld.sl: Unresolved symbol: csf_gss_get_OidAddress (code) from /sybase/product/12.0/OCS-12_0/lib/libskrb.sl

# Failed test (t/autocommit.t at line 18)
t/autocommit....NOK 2# Tried to use 'DBD::Sybase'.
# Error: Can't load 'blib/arch/auto/DBD/Sybase/Sybase.sl' for module DBD::Sybase: Unresolved external at /opt/perl/lib/5.8.6/PA-RISC2.0/DynaLoader.pm line 230.
# at (eval 6) line 2
# Compilation failed in require at (eval 6) line 2.
# BEGIN failed--compilation aborted at t/autocommit.t line 18.
Had to create DBD::Sybase::dr::imp_data_size unexpectedly at /opt/perl/lib/site_perl/5.8.6/PA-RISC2.0/DBI.pm line 1207.
Use of uninitialized value in subroutine entry at /opt/perl/lib/site_perl/5.8.6/PA-RISC2.0/DBI.pm line 1207.
Had to create DBD::Sybase::db::imp_data_size unexpectedly at /opt/perl/lib/site_perl/5.8.6/PA-RISC2.0/DBI.pm line 1237.
Use of uninitialized value in subroutine entry at /opt/perl/lib/site_perl/5.8.6/PA-RISC2.0/DBI.pm line 1237.
Undefined subroutine &DBD::Sybase::db::_login called at blib/lib/DBD/Sybase.pm line 90.
# Looks like you planned 9 tests but only ran 2.
# Looks like your test died just after 2.

is just a small snippet of the output.

Do any of these errors mean anything to anyone and/or can anyone help me get this installed cleanly?

Appreciate any hints/tips/suggestions.

Doug O'Leary

------
Senior UNIX Admin
O'Leary Computers Inc
linkedin: http://www.linkedin.com/dkoleary
Resume: http://www.olearycomputers.com/resume.html
1 REPLY 1
Steve Post
Trusted Contributor

Re: perl DBD::Sybase

There's a few things that can screw it up.
I'm assuming you are using gcc.

These variables need set:
Update the path so it can see gcc before hp's CC.
CC=GCC GCC=YES
Assume that S=the real path to sybase, like "/mydir/sybase"

SYBASE=S (i.e. SYBASE=/mydir/sybase)
SYBASE_OCS=OCS-12_0
SYBASE_ASE=ASE-12_0
SHLIB_PATH=/S/OCS-12_5/lib:/S/OCS-12_5:/usr/lib:/lib
:/usr/lib/Motif1.2:/S/SQLRemote/lib:/S/ASE-12_0/lib:

vi CONFIG
SYBASE= S
vi PWD
put in a valid username, password, and SERVER.

perl Makefile.PL

-----------and----------
There is a typo in Makefile.PL in version 13. It gets fixed in later versions of sybperl. But I can always fix it right now.
Change this line.....
From: 'MAN3PODS' => 'pod/sybperl.pod'
To: 'MAN3PODS' => { 'pod/sybperl.pod' => 'blib/man3/sybperl.3' }
------------and-------------
libinsk is busted?
In the CONFIG file is " EXTRALIB=-libinsck."
This bombs out on "gmake" because there is no libinsck.sl file.

There are files like this instead......
S(i.e. the sybase path)/OCS-12_5/lib/ libinsck.sl.12.5.1.0

The solution is to make a link.
libinsck.sl -> ./libinsck.sl.12.5.1.4

----and--------------
It died because CTlib.sl could not see sybase where it expected it to be?

strings ./lib/site_perl/5.6.0/PA-RICS2.0/auto/Sybase/DBlib/DBlib.sl | \
grep -E "\/ \/"

strings ./lib/site_perl/5.6.0/PA-RICS2.0/auto/Sybase/CTlib/CTlib.sl | \
grep -E "\/ \/"