perl - 尝试在 Centos-7 上安装 DBD-Pg-2.19.3 时找不到 version.pm
问题描述
在 Centos 7 上。
oracle DBD 安装得很好我在使用 Postgresql 版本时遇到了问题。
这是我正在运行的脚本:
set -x -e
sudo yum -y install perl-devel
sudo yum -y install perl-DBI
cp ./DBD* /tmp
pushd /tmp
tar xvf DBD-Oracle-1.52.tar
tar xvf DBD-Pg-2.19.3.tar
pushd DBD-Oracle-1.52
perl Makefile.PL
sudo make
sudo make install
popd
pushd DBD-Pg-2.19.3
perl Makefile.PL
sudo make
sudo make install
postgresql DBD perl Makefile.PL 返回
++ perl Makefile.PL
Configuring DBD::Pg 2.19.3
PostgreSQL version: 90224 (default port: 5432)
POSTGRES_HOME: (not set)
POSTGRES_INCLUDE: /usr/include
POSTGRES_LIB: /usr/lib64
OS: linux
Warning: prerequisite Test::More 0.61 not found.
Warning: prerequisite version 0 not found.
Could not eval '
package ExtUtils::MakeMaker::_version;
no strict;
BEGIN { eval {
# Ensure any version() routine which might have leaked
# into this package has been deleted. Interferes with
# version->import()
undef *version;
require version;
"version"->import;
} }
local $VERSION;
$VERSION=undef;
do {
use version; our $VERSION = qv('2.19.3');
};
$VERSION;
' in Pg.pm: Can't locate version.pm in @INC (@INC contains: t/lib /usr/local/lib64/perl5 /usr/local/share/perl5 /usr/lib64/perl5/vendor_perl /usr/share/perl5/vendor_perl /usr/lib64/perl5 /usr/share/perl5 .) at (eval 9) line 16, <$fh> line 19.
BEGIN failed--compilation aborted at (eval 9) line 16, <$fh> line 19.
WARNING: Setting VERSION via file 'Pg.pm' failed
at /usr/share/perl5/vendor_perl/ExtUtils/MakeMaker.pm line 619.
Using DBI 1.627 (for perl 5.016003 on x86_64-linux-thread-multi) installed in /usr/lib64/perl5/vendor_perl/auto/DBI/
Writing Makefile for DBD::Pg
++ sudo make
Skip blib/lib/DBD/testme.tmp.pl (unchanged)
Skip blib/lib/Bundle/DBD/Pg.pm (unchanged)
Skip blib/lib/DBD/Pg.pm (unchanged)
gcc -c -I/usr/include -I/usr/lib64/perl5/vendor_perl/auto/DBI -D_REENTRANT -D_GNU_SOURCE -fno-strict-aliasing -pipe -fstack-protector -I/usr/local/include -D_LARGEFILE_SOURCE -D_FILE_OFFSET_BITS=64 -DPGLIBVERSION=90224 -DPGDEFPORT=5432 -O2 -g -pipe -Wall -Wp,-D_FORTIFY_SOURCE=2 -fexceptions -fstack-protector-strong --param=ssp-buffer-size=4 -grecord-gcc-switches -m64 -mtune=generic -DPERL_EXTMALLOC_DEF -Dmalloc=Perl_malloc -Dfree=Perl_mfree -Drealloc=Perl_realloc -Dcalloc=Perl_calloc -DVERSION=\"undef\" -DXS_VERSION=\"undef\" -fPIC "-I/usr/lib64/perl5/CORE" Pg.c
In file included from Pg.xs:13:0:
Pg.h:36:22: fatal error: libpq-fe.h: No such file or directory
#include "libpq-fe.h"
^
compilation terminated.
make: *** [Pg.o] Error 1
但是定位显示:
/common/oracle/tfa/austin/tfa_home/perl/lib/5.22.0/version.pm
/common/oracle/tfa/austin/tfa_home/perl/lib/5.22.0/ExtUtils/MakeMaker/version.pm
/common/orainst/perl/lib/5.22.0/version.pm
/common/orainst/perl/lib/5.22.0/ExtUtils/MakeMaker/version.pm
/opt/oracle/product/18c/dbhomeXE/perl/lib/5.22.0/version.pm
/opt/oracle/product/18c/dbhomeXE/perl/lib/5.22.0/ExtUtils/MakeMaker/version.pm
解决方案
您需要安装完整的 Perl 核心。在 CentOS 7 中,这个包被称为perl-core
,perl
只是解释器,如果你真的想自己使用它,不适合。在最新版本的 Fedora 中,完整的 Perl 被重命名为perl
(并且解释器重命名为)。perl-interpreter
yum install perl-core
更好的是构建自己的 Perl,这样您就可以根据需要将东西安装到其中,而不会弄乱可能被其他东西使用的系统 Perl 并且不期望这些更新。如果您坚持使用系统 Perl,建议使用local::lib或Carton隔离您在没有包管理器的情况下安装的任何模块。
看起来您已经有一个单独的 Perl 构建,因为那些包含的路径不是来自 CentOS 7 中的系统 perl。除非它来自 Oracle 存储库,否则这个5.22.0
Perl 的安装将不会被管理或与您安装的任何东西相关。yum
安装可以处理该模块依赖关系的模块的正确方法是使用cpan客户端或其他客户端,如cpanm。只需确保运行要安装模块并使用的 Perl 的可执行文件。
推荐阅读
- python - 局部变量 'i' 可能在赋值之前被引用
- c# - 创建一个在线程及其所有子线程之间共享的值
- c# - Xamarin窗体IOS中System.Exception+ExceptionMessageKind.OutOfMemory如何处理?
- node.js - 我无法在我的获取请求中从我的中间件获取有效负载中的用户 ID
- c# - 对撞机没有检测到?
- azure - Azure 应用服务与 VM 中的 SQL Server 集成
- elasticsearch - 如何在elasticsearch中获取带有条件的桶数?
- html - 在选择了同一组中的其他单选按钮后,我们如何重置单选按钮
- node.js - Node.js 集群 - 为什么脚本在没有明显原因的情况下多次运行?
- python - 在 python 类中使用队列 - ''function' 对象不可下标