Ed, ED > I don't really understand why Perl 5.8.7 lacked DB_File since ED > Module::CoreList [...] reports it being standard sine 5.00307. Perhaps ED > this is some sort of emasculated version that ships with Solaris :-)
Nope, I wasn't using a "Perl lite" version. ;-) Although Solaris now comes with Perl (v.5.6.1 for Solaris 9), when I set up a server I always download and compile from the latest Perl source (v.5.8.7 in this case) and that's the Perl version I use for my scripts and the version to which I add any non-standard modules. I did a plain vanilla "all defaults" Perl installation [1]. ED > It looks like the user tried to install DB_File without having the ED > BerkeleyDB libraries from SleepyCat already installed. It *is* true that I tried to install the DB_File.pm module without having installed any software from SleepyCat (although I *did* check for Berkeley DB libraries installed as Solaris packages and was hoping that they would suffice [2]). If DB_File.pm requires software from SleepyCat as part of the compile/installation process, I'm curious how it could be installed as a core module. However, the DB_File documentation on CPAN (Paul Marquess > DB_File-1.814 > DB_File) states this: AVAILABILITY DB_File comes with the standard Perl source distribution. Look in the directory ext/DB_File. ...and I rechecked my Perl source and it *is* in that directory. However, the Perl "Configure" script appears to do some system checking in regard to what Berkeley DB components are available [3]. I'm guessing the necessary Berkeley DB stuff is installed by default on some platforms, and thus DB_File.pm gets installed when compiling/installing Perl on those platforms. Not apparently, however, the case for my particular Solaris/Perl setup (nor is it included in the Solaris OS package v5.6.1 Perl version), although I'd be interested in the experiences of other Solaris sites in installing MARC::Charset. Although for security reasons, we no longer install the Solaris "Entire" metacluster, I did do a Solaris package search for "Berkeley DB" (http://rocky.uta.edu/doran/pkginfo/search.cgi) and I installed the only two relevant Solaris packages I found prior to trying to install the DB_File.pm module from the source code. Sooooo... this is all very interesting (and I've definitely learned something here), but like I suggested previously, this level of digging may be a bit beyond the "casual" Perl user. ;-) -- Michael # Michael Doran, Systems Librarian # University of Texas at Arlington # 817-272-5326 office # 817-688-1926 cell # [EMAIL PROTECTED] # http://rocky.uta.edu/doran/ [1] hostname:/> /opt/bin/perl -v This is perl, v5.8.7 built for sun4-solaris Copyright 1987-2005, Larry Wall Perl may be copied only under the terms of either the Artistic License or the GNU General Public License, which may be found in the Perl 5 source kit. Complete documentation for Perl, including FAQ lists, should be found on this system using `man perl' or `perldoc perl'. If you have access to the Internet, point your browser at http://www.perl.org/, the Perl Home Page. bullwinkle:/opt/lib/perl5> /opt/bin/perl -V Summary of my perl5 (revision 5 version 8 subversion 7) configuration: Platform: osname=solaris, osvers=2.9, archname=sun4-solaris uname='sunos bullwinkle 5.9 generic_118558-06 sun4u sparc sunw,ultra-enterprise ' config_args='-de' hint=recommended, useposix=true, d_sigaction=define usethreads=undef use5005threads=undef useithreads=undef usemultiplicity=undef useperlio=define d_sfio=undef uselargefiles=define usesocks=undef use64bitint=undef use64bitall=undef uselongdouble=undef usemymalloc=n, bincompat5005=undef Compiler: cc='gcc', ccflags ='-fno-strict-aliasing -pipe -D_LARGEFILE_SOURCE -D_FILE_OFFSET_BITS=64', optimize='-O', cppflags='-fno-strict-aliasing -pipe' ccversion='', gccversion='2.95.3 20010315 (release)', gccosandvers='solaris2.9' intsize=4, longsize=4, ptrsize=4, doublesize=8, byteorder=4321 d_longlong=define, longlongsize=8, d_longdbl=define, longdblsize=16 ivtype='long', ivsize=4, nvtype='double', nvsize=8, Off_t='off_t', lseeksize=8 alignbytes=8, prototype=define Linker and Libraries: ld='gcc', ldflags =' ' libpth=/usr/lib /usr/ccs/lib libs=-lsocket -lnsl -ldl -lm -lc perllibs=-lsocket -lnsl -ldl -lm -lc libc=/lib/libc.so, so=so, useshrplib=false, libperl=libperl.a gnulibc_version='' Dynamic Linking: dlsrc=dl_dlopen.xs, dlext=so, d_dlsymun=undef, ccdlflags=' ' cccdlflags='-fPIC', lddlflags='-G' Characteristics of this binary (from libperl): Compile-time options: USE_LARGE_FILES Built under solaris Compiled at Jun 13 2005 10:21:04 @INC: /opt/lib/perl5/5.8.7/sun4-solaris /opt/lib/perl5/5.8.7 /opt/lib/perl5/site_perl/5.8.7/sun4-solaris /opt/lib/perl5/site_perl/5.8.7 /opt/lib/perl5/site_perl . [2] From previous message: > The DB_File README says that "Berkeley DB" is a prerequisite. > I have the following Solaris packages installed: > SFWbdb berkeleyDB - Berkeley Database Library > SFWdb1 Berkeley DB - database library > ... but I'm not sure if that constitutes having the "Berkeley DB". [3] Excerpt from the "perl-5.8.7/Configure script": : see if this is a db.h system set db.h i_db eval $inhdr case "$i_db" in $define) : Check db version. echo " " echo "Checking Berkeley DB version ..." >&4 $cat >try.c <<EOCP #$d_const HASCONST #ifndef HASCONST #define const #endif #include <sys/types.h> #include <stdio.h> #$i_stdlib I_STDLIB #ifdef I_STDLIB #include <stdlib.h> #endif #include <db.h> int main(int argc, char *argv[]) { #ifdef DB_VERSION_MAJOR /* DB version >= 2 */ int Major, Minor, Patch ; unsigned long Version ; (void)db_version(&Major, &Minor, &Patch) ; if (argc == 2) { printf("%d %d %d %d %d %d\n", DB_VERSION_MAJOR, DB_VERSION_MINOR, DB_VERSION_PATCH, Major, Minor, Patch); exit(0); } printf("You have Berkeley DB Version 2 or greater.\n"); printf("db.h is from Berkeley DB Version %d.%d.%d\n", DB_VERSION_MAJOR, DB_VERSION_MINOR, DB_VERSION_PATCH); printf("libdb is from Berkeley DB Version %d.%d.%d\n", Major, Minor, Patch) ; /* check that db.h & libdb are compatible */ if (DB_VERSION_MAJOR != Major || DB_VERSION_MINOR != Minor || DB_VERSION_PAT CH != Patch) { printf("db.h and libdb are incompatible.\n") ; exit(3); } printf("db.h and libdb are compatible.\n") ; Version = DB_VERSION_MAJOR * 1000000 + DB_VERSION_MINOR * 1000 + DB_VERSION_PATCH ; /* needs to be >= 2.3.4 */ if (Version < 2003004) { /* if (DB_VERSION_MAJOR == 2 && DB_VERSION_MINOR == 0 && DB_VERSION_PATCH < 5) { */ printf("Perl needs Berkeley DB 2.3.4 or greater.\n") ; exit(2); } exit(0); #else #if defined(_DB_H_) && defined(BTREEMAGIC) && defined(HASHMAGIC) if (argc == 2) { printf("1 0 0\n"); exit(0); } printf("You have Berkeley DB Version 1.\n"); exit(0); /* DB version < 2: the coast is clear. */ #else exit(1); /* <db.h> not Berkeley DB? */ #endif #endif } EOCP set try if eval $compile_ok && $run ./try; then echo 'Looks OK.' >&4 set `$run ./try 1` db_version_major=$1 db_version_minor=$2 db_version_patch=$3 else echo "I can't use Berkeley DB with your <db.h>. I'll disable Be rkeley DB." >&4 i_db=$undef case " $libs " in *"-ldb "*) : Remove db from list of libraries to use echo "Removing unusable -ldb from library list" >&4 set `echo X $libs | $sed -e 's/-ldb / /' -e 's/-ldb$//'` shift libs="$*" echo "libs = $libs" >&4 ;; esac fi $rm -f try.* ;; esac case "$i_db" in define) : Check the return type needed for hash echo " " echo "Checking return type needed for hash for Berkeley DB ..." >&4 $cat >try.c <<EOCP <yada, yada, yada>