使用 perl DB_File 创建文件时如何指定 BerkeleyDB 的版本?
How to specify version of BerkeleyDB when creating file using perl DB_File?
我们的 perl 脚本和 PHP 脚本之间似乎在 BerkeleyDB 中遇到了版本不兼容问题。我们的 perl 脚本生成 BDB 而我们的 php 脚本只是读取它们。
我们的 perl 脚本使用 DB_File 创建 BDB 文件:
use DB_File;
$DBFILE="output.db";
tie(%db, "DB_File", $DBFILE, O_RDWR | O_CREAT, 0644)
or warning("Could not open db file '$DBFILE'");
这之前创建了一个类型的文件:
$ file output.db
output.db: Berkeley DB (Hash, version 9, native byte-order)
但是,在升级 sys-libs/db 和 DB_File 之后,现在创建的文件类型为:
$ file output.db
output.db: Berkeley DB (Hash, version 10, native byte-order)
在系统的另一端,我们有一个 PHP 脚本。当升级发生时,我们的 PHP 代码(基于 dba_open())开始抱怨版本:
Notice: dba_open(): output.db: unsupported hash version: 10 in dbread.php on line 16
我试过升级PHP,但似乎还不支持版本10。
有没有办法告诉 perl 的 DB_File 在创建数据库时创建特定版本?
不,无法告诉 perl 的 DB_File 创建特定版本,AFAIK libdb 本身没有该功能
如果您 compile/link 反对版本 4.x 的 libdb,那么 DB_File 只能使用该版本
因此,如果您需要使用 libdb-4.x 的 DB_File,您将不得不降级或在不同的 @INC 目录中安装另一个副本
安装时这是您编辑的文件https://metacpan.org/source/PMQS/DB_File-1.835/config.in
只需更改 DBNAME = -ldb-2.4.10
以匹配您的 php 安装使用的版本
使用 https://metacpan.org/pod/ExtUtils::MakeMaker#INSTALL_BASE then tell perl where to find it with https://metacpan.org/pod/perlrun#PERL5LIB
指定不同的安装目录
我们的 perl 脚本和 PHP 脚本之间似乎在 BerkeleyDB 中遇到了版本不兼容问题。我们的 perl 脚本生成 BDB 而我们的 php 脚本只是读取它们。
我们的 perl 脚本使用 DB_File 创建 BDB 文件:
use DB_File;
$DBFILE="output.db";
tie(%db, "DB_File", $DBFILE, O_RDWR | O_CREAT, 0644)
or warning("Could not open db file '$DBFILE'");
这之前创建了一个类型的文件:
$ file output.db
output.db: Berkeley DB (Hash, version 9, native byte-order)
但是,在升级 sys-libs/db 和 DB_File 之后,现在创建的文件类型为:
$ file output.db
output.db: Berkeley DB (Hash, version 10, native byte-order)
在系统的另一端,我们有一个 PHP 脚本。当升级发生时,我们的 PHP 代码(基于 dba_open())开始抱怨版本:
Notice: dba_open(): output.db: unsupported hash version: 10 in dbread.php on line 16
我试过升级PHP,但似乎还不支持版本10。
有没有办法告诉 perl 的 DB_File 在创建数据库时创建特定版本?
不,无法告诉 perl 的 DB_File 创建特定版本,AFAIK libdb 本身没有该功能
如果您 compile/link 反对版本 4.x 的 libdb,那么 DB_File 只能使用该版本
因此,如果您需要使用 libdb-4.x 的 DB_File,您将不得不降级或在不同的 @INC 目录中安装另一个副本
安装时这是您编辑的文件https://metacpan.org/source/PMQS/DB_File-1.835/config.in
只需更改 DBNAME = -ldb-2.4.10
以匹配您的 php 安装使用的版本
使用 https://metacpan.org/pod/ExtUtils::MakeMaker#INSTALL_BASE then tell perl where to find it with https://metacpan.org/pod/perlrun#PERL5LIB
指定不同的安装目录