![](/img/trans.png)
[英]Error “Can't locate version.pm in @INC” when I call my DBI module
[英]can't find version.pm while trying to install DBD-Pg-2.19.3 on Centos-7
在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構建,因為包含5.22.0
路徑不是來自CentOS 7中的系統perl。除非您使用yum
安裝,否則將不會管理Perl的安裝或與之無關,除非它來自Oracle資料庫。 安裝可以處理該模塊依賴性的模塊的正確方法是使用cpan客戶端或其他客戶端(例如cpanm) 。 只需確保為要安裝模塊的Perl運行可執行文件即可。
這是(當前)問題的prerequisite Test::More 0.61 not found
。
這是解決方案https://superuser.com/a/1111321/156111
”
yum install make cpan
然后用CPAN配置您的perl。 只需在命令提示符下輸入cpan,然后回答所有交互式問題即可。
然后更新您的cpan管理員:
#cpan install Bundle::CPAN
#cpan reload cpan
現在安裝您感興趣的軟件包:
#cpan install Test::More
”
如果您對使用系統Perl及其相關的Perl庫感到滿意(就像您正在運行yum install perl-DBI
),則可以使用DBD :: Pg的預打包版本。
sudo yum install perl-DBD-Pg
並且這將自動拉入所需的任何其他RPM。
DBD :: Oracle更難。 沒有預構建的軟件包(大概是因為Oracle不是開源的),但是您可以按照我幾年前描述的方法構建自己的RPM。 您將需要確保已經安裝了Oracle客戶端庫(及其關聯的頭文件)。
set -x -e
sudo yum -y install perl-devel
sudo yum -y install perl-DBI
sudo yum -y install perl-version perl-Data-Dumper
sudo yum -y install postgresql-devel
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
cd ~/ora2pg
perl Make.PL
sudo make
sudo make install
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.