2013-12-13 18 views
11

próbuję uruchomić ten skrypt:Nie można zlokalizować 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); 

Kiedy uruchomić ten skrypt otrzymuję ten błąd:

Can't locate DBI.pm in @INC (@INC contains: /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 .) at ./prova.pl line 3.

Mam wszystko zainstalowane! ! DBI.pm jest zainstalowany !!

+3

Jeśli go zainstalować, należy albo zainstalować go za pomocą/dla innego 'perl' lub poleciłeś Perlowi zainstalować go w niestandardowym katalogu i nie powiedziałeś' perl' żeby zajrzał do tego katalogu. 1) Jak to zainstalowałeś? 2) Jaka jest pełna ścieżka do 'DBI.pm'? – ikegami

+0

Wypróbuj polecenie 'perldoc -l DBI'. Jeśli DBI.pm jest zainstalowany i znajduje się w ścieżce dołączania Perla, zobaczysz lokalizację instalacji. W twoim systemie może być zainstalowanych wiele Perlsów i możesz uzyskać dostęp do niewłaściwego. Jaka jest twoja linia shebang? Używam '#!/usr/bin/env perl', aby pobrać wersję Perla, której używa moja ścieżka, i używam [Perlbrew] (http://perlbrew.pl) do obsługi wielu wersji Perla. –

+0

I w którym z tych katalogów wymienionych w powyższym komunikacie o błędzie jest on zainstalowany? – runrig

Odpowiedz

1

DBI nie znajduje się w twojej ścieżce @INC, która mówi perlowi gdzie szukać niestandardowych modułów. Jest tak prawdopodobnie dlatego, że zainstalowałeś je za pomocą narzędzia cpan jako użytkownik inny niż root, który nie ma prawa zapisu do domyślnych ścieżek dostępu.

Musisz zlokalizować DBI.pm i inne pakiety i przenieść je do swojej ścieżki @INC.

Ewentualnie znaleźć pakiety już zainstalowane i dodać ścieżkę instalacji w ścieżce biblioteki, do jednorazowego użytku:

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

A dla bardziej trwałe rozwiązanie, dodać do ~/.bashrc:

export PERL5LIB=/path/to/modules 
+0

Jak mogę znaleźć ścieżkę pakietu DBI? – chaw359

+0

@ chaw359 'znajdź/-name 'DBI.pm' 2>/dev/null' zrobi to w systemie UNIX. –

+0

@ chaw359 - Jak to zainstalowałeś? – Quentin

4

Jeśli nie masz aktywnego Perl (a więc nie mają ppm), można również uzyskać DBI tak:

perl -MCPAN -e 'install DBI' 

Być może trzeba zainstalować sterowniki dla PostgreSQL tak:

perl -MCPAN -e 'install DBD::Pg' 
14

Jeśli korzeń, wpisz w konsoli (Debian/Ubuntu):

sudo apt-get install libdbi-perl 
Powiązane problemy