Не удается найти DBI.pm

Я пытаюсь запустить этот скрипт:

#!/usr/bin/perl 

use DBI;

my $dbh = DBI->connect( 'dbi:Oracle:host=lonlin2;sid=TIMFX1AD;port=1524','xbsesdbo','xbsesdbo123' )  || die ( $DBI::errstr . "\n" );

my $query= "SELECT * FROM product_elements WHERE element_id = 1001";
my $queryHandler= $dbh->prepare($query);

my $result= $queryHandler->execute();


open(fileHandler,"> note.txt");

print fileHandler "Risultato query: $result\n";

my $e= $dbh->disconnect();
close(fileHandler);

Когда я запускаю этот скрипт, я получаю эту ошибку:

Не удается найти DBI.pm в @INC (@INC содержит: /opt/perl_32/lib/5.8.3/IA64.ARCHREV_0-thread-multi /opt/perl_32/lib/5.8.3 /opt/perl_32/lib/ site_perl/5.8.3/IA64.ARCHREV_0-thread-multi /opt/perl_32/lib/site_perl/5.8.3 /opt/perl_32/lib/site_perl /opt/perl_32/lib/vendor_perl/5.8.3/IA64.ARCHREV_0- thread-multi /opt/perl_32/lib/vendor_perl/5.8.3 /opt/perl_32/lib/vendor_perl .) в ./prova.pl, строка 3.

У меня все установлено! DBI.pm установлен!


person chaw359    schedule 13.12.2013    source источник
comment
Если вы установили его, вы либо установили его, используя/для другого perl, либо вы указали Perl установить его в нестандартный каталог, и вы не сказали perl заглянуть в этот каталог. 1) Как ты его устанавливал? 2) Какой полный путь к DBI.pm?   -  person ikegami    schedule 13.12.2013
comment
Попробуйте команду perldoc -l DBI. Если DBI.pm установлен и находится в пути Perl Include, вы увидите расположение установки. В вашей системе может быть установлено несколько Perl, и вы можете получить доступ не к тому. Какая у тебя линия шебанга? Я использую #! /usr/bin/env perl для выбора версии Perl, которую использует мой Path, и я использую Perlbrew для обработки нескольких версий Perl.   -  person David W.    schedule 13.12.2013
comment
И в какой из этих каталогов, перечисленных в сообщении об ошибке выше, он установлен?   -  person runrig    schedule 13.12.2013


Ответы (5)


Если у вас есть root, введите в консоли (Debian/Ubuntu):

sudo apt-get install libdbi-perl
person Michu93    schedule 13.08.2015

Если у вас нет активного perl (и, следовательно, нет ppm), вы также можете получить DBI следующим образом:

perl -MCPAN -e 'install DBI'

Вам может понадобиться установить драйверы для Postgres следующим образом:

perl -MCPAN -e 'install DBD::Pg'
person user216268    schedule 01.04.2014
comment
Спасибо, это работает! Однако мне пришлось запустить его с помощью sudo, так как у меня недостаточно прав. Я установил его с помощью sudo perl -MCPAN -e 'install DBI'. - person Aleksey Kuznetsov; 26.10.2020

Для пользователей redhat/centos:

sudo yum -y install perl-DBI
person Ankit Agarwal    schedule 27.08.2019

DBI не находится в вашем пути @INC, который указывает Perl, где искать пользовательские модули. Вероятно, это связано с тем, что вы установили их с помощью инструмента cpan в качестве пользователя без полномочий root, у которого не будет доступа для записи к путям включения по умолчанию.

Вам нужно будет найти DBI.pm и другие пакеты и переместить их по пути @INC.

В качестве альтернативы найдите пакеты, которые вы установили, и добавьте путь установки в путь к библиотеке для одноразового использования:

PERL5LIB=/path/to/modules perl yourscript.pl

И для более постоянного решения добавьте это к ~/.bashrc:

export PERL5LIB=/path/to/modules
person Glitch Desire    schedule 13.12.2013
comment
Как я могу найти путь к пакету DBI? - person chaw359; 13.12.2013
comment
@chaw359 find / -name 'DBI.pm' 2>/dev/null сделает это в UNIX-подобной ОС. - person Glitch Desire; 13.12.2013
comment
@ chaw359 — Как ты его установил? - person Quentin; 13.12.2013
comment
Где я могу использовать PERL5LIB=/path/to/modules perl yourscript.pl ?? В коде или это команда для unix? Покажите мне пример :D - person chaw359; 13.12.2013
comment
@ chaw359 Это будет в командной строке, когда вы запустите свой скрипт. - person Glitch Desire; 13.12.2013

Для пользователей Alpine используйте perl-dbi: apk add perl-dbi

person William Desportes    schedule 15.05.2021