Berkeley DB と DB_File モジュール

Berkeley DB って実はいろんなバージョンをそのうちインストールすることになるのだろうか?
前回のOpenSolarisVMには、/usr/local 以下に4.2を入れこんだんですが、今回のサーバは、/usr/local/BerkeleyDB.4.7 以下に入れます。
使うときは、そのつどPathを通すことになるのでしょう。。。

○Berkeley DB 4.7


$ wget http://download.oracle.com/berkeley-db/db-4.7.25.NC.tar.gz
$ gzip -cd db-4.7.25.NC.tar.gz | tar xf -
$ cd db-4.7.25.NC
$ cd build_unix/
$ ../dist/configure --prefix=/usr/local/BerkeleyDB.4.7
$ make
$ pfexec make install
$ ls /usr/local/BerkeleyDB.4.7/
bin docs include lib
$

○DB_Fileモジュール
Pathなしでコケル。


$ /usr/local/bin/perl Makefile.PL
Parsing config.in...
Looks Good.
Note (probably harmless): No library found for -ldb
Writing Makefile for DB_File
$
$ make
cp DB_File.pm blib/lib/DB_File.pm
AutoSplitting blib/lib/DB_File.pm (blib/lib/auto/DB_File)
cc -c -I/usr/local/BerkeleyDB/include -D_REENTRANT -D_LARGEFILE_SOURCE -D_FILE_OFFSET_BITS=64 -DPERL_USE_SAFE_PUTENV -O -DVERSION=\"1.819\" -DXS_VERSION=\"1.819\" -KPIC "-I/usr/local/lib/perl5/5.10.0/i86pc-solaris-thread-multi/CORE" -D_NOT_CORE -DmDB_Prefix_t=size_t -DmDB_Hash_t=u_int32_t version.c
"version.c", line 30: cannot find include file:
cc: acomp failed for version.c
*** Error code 2
make: Fatal error: Command failed for target `version.o'
$

READMEより


...
2. You do have Berkeley DB installed, but it isn't in a standard place.
Solution: Edit config.in and set the LIB and INCLUDE variables to point
to the directories where libdb.a and db.h are installed.
...

config.inを書き換えればOK.


$ vi config.in
...
#INCLUDE = /usr/local/BerkeleyDB/include
INCLUDE = /usr/local/BerkeleyDB.4.7/include
...
#LIB = /usr/local/BerkeleyDB/lib
LIB = /usr/local/BerkeleyDB.4.7/lib
...
$ /usr/local/bin/perl Makefile.PL
Parsing config.in...
Looks Good.
Writing Makefile for DB_File
$ make
$ make test
...
All tests successful, 1 test skipped.
Files=4, Tests=567, 7 wallclock secs ( 4.32 cusr + 1.17 csys = 5.49 CPU)
$ pfexec make install
$