2012-07-10 8 views
17

Czy ktoś mógłby wskazać mi, jak zainstalować moduł Perl DBD::Oracle?Perl DBD :: Instalacja modułu Oracle

Oto co zrobiłem do tej pory:

  • Platforma: RHEL 5.8 64 bit
  • zainstalowanego pakietu Perl DBI
  • Zainstalowany Oracle Instant Client for Linux 64 bit (Basi + sdk + sqlplus komponentu do natychmiastowego klienta
  • została ustawiona prawidłowa $ORACLE_HOME i $LD_LIBRARY_PATH
  • Wtedy kiedy ja perl Makefile.pl nie powiedzie się z th e następujący błąd:

    I'm having trouble finding your Oracle version number... trying harder 
    
    WARNING: I could not determine Oracle client version so I'll just 
    default to version 8.0.0.0. Some features of DBD::Oracle may not work. 
    Oracle version based logic in Makefile.PL may produce erroneous results. 
    You can use "perl Makefile.PL -V X.Y.Z" to specify a your client version. 
    
    Oracle version 8.0.0.0 (8.0) 
    DBD::Oracle no longer supports Oracle client versions before 9.2 
    Try a version before 1.25 for 9 and 1.18 for 8! at Makefile.PL line 271. 
    
  • instant wersja klient: 11.1.0

  • Wersja DBD::Oracle jest 1,44

Jeśli zainstalowano pomyślnie z Oracle Instant Client, wtedy mógłbyś daj mi znać, czego mi brakuje? Czy można zainstalować DBD::Oracle bez korzystania z klienta natychmiastowego Oracle?

Odpowiedz

37
  • zainstalować moduł Perl DBI ($ yum install perl-DBI)
  • Ręczna instalacja poniżej trzech RPM dla Oracle Instant Client (z Instant Client Downloads for Linux x86-64)

    oracle-instantclient11.2-basic-11.2.0.3.0-1 
    oracle-instantclient11.2-devel-11.2.0.3.0-1 
    oracle-instantclient11.2-sqlplus-11.2.0.3.0-1 
    

używam 64 bitowego Linuksa, więc wybrać odpowiednio nazwy plików RPM.

  • poniżej zestaw zmiennych:

    LD_LIBRARY_PATH=/usr/lib/oracle/11.2/client64/lib 
    ORACLE_HOME=/usr/lib/oracle/11.2/client64 
    

    użytkowników MacOS będą musiały:

    DYLD_LIBRARY_PATH=/usr/lib/oracle/11.2/client64/ 
    

    dodać także ORACLE_HOME do zmiennej PATH.

  • pobieranie DBD :: Oracle z CPAN

  • rozpakować i uruchomić moduł poniżej komendy w danej sekwencji:

    perl Makefile.PL 
    make 
    make install 
    

GOTOWE !!!

Problemy, z którymi miałem do czynienia, były spowodowane nieprawidłowym LD_LIBRARY_PATH. Ustawiłem to na /usr/lib/oracle/11.2/client64, natomiast poprawna wartość to /usr/lib/oracle/11.2/client64/lib.

Z pewnością była to wspaniała nauka dla początkujących, takich jak ja.

5

można również przeczytać mój artykuł How to install DBD::Oracle, który zawiera wszystkie kroki wymagane do zainstalowania modułu DBD :: Oracle CPAN, co nie jest prostą instalacją. Celem jest zmniejszenie bólu głowy i przekształcenie go w powtarzalny proces.

+0

@gerardw: dzięki za to sprawozdanie, po prostu usuwa ostatni ukośnik, ponieważ może to się stało Strony GitHub zaktualizowane do Jekyll3 i zmiany formatu linków. Właściwie to nie udaje mi się ogłosić tego linku i Nie zarabiam pieniędzy na mojej stronie internetowej, lubię dzielić się moją wiedzą, aby oddać ją społeczności, i jestem naprawdę przekonany, że artykuł może pomóc innym osobom, które zmagały się (jak ja :) próbuje zainstalować DBD :: Oracle. –

+0

Czy masz szansę zaktualizować ten dokument na 12.x? 12.2 przynajmniej nie dołączaj pliku .mk, a "demo" to coś, na co kompiluje się. Dlaczego moduł CPAN nie działa na nic nowszego niż w 2014 roku? – Otheus

+0

Witam @Otheus Przykro mi, ale nie używam ostatnio Oracle, więc nie mam Oracle 12, aby go przetestować. Artykuł został napisany dla Oracle 11g, ale nie rozumiem pliku .mk, który się odwołuje, ponieważ nie ma wzmianki w instrukcjach do artykułu. Na jakim etapie instrukcji dotarłeś? Jaki błąd dostałeś? Może ja też mogę pomóc. –

0

Mały dodatek do odpowiedzi na slayedbylucifer. Miałem ten sam problem jak wspomniany w pytaniu. Zrobiłem wszystkie kroki opisane przez slayedbylucifer. Ale nadal mam problem jak wspomniano here:

/usr/lib64/gcc/x86_64-suse-linux/4.3/../../../../x86_64-suse-linux/bin/ld: skipping incompatible /opt/oracle/app/oracle/product/11.2.0/client_1/lib//libclntsh.so when searching for -lclntsh 
/usr/lib64/gcc/x86_64-suse-linux/4.3/../../../../x86_64-suse-linux/bin/ld: cannot find -lclntsh 

Więc stworzył poniższy link symboliczny:

ln -s /opt/oracle/app/oracle/product/<YOUR_ORACLE_VERSION>/client_1/lib/libclntsh.so $ORACLE_HOME/libclntsh.so* 

Po tym kroku błędu z góry (nie można znaleźć -lclntsh) została ustalona. Wykonanie polecenia make było bez błędów.

Jedyny problem, jaki mam nadal, to to, że nie rozumiem, dlaczego to dowiązanie symboliczne jest konieczne.

2

Oto, co zrobiłem w CentOS 7.2 przy użyciu pakietów yum i CPAN. Zakłada to, że używasz wersji Oracle 12.1, ale wyobrażam sobie, że większość wersji będzie działała w ten sposób.

Instalacja Oracle Instant Client

yum install oracle-instantclient12.1-basic-12.1.0.2.0-1 oracle-instantclient12.1-devel-12.1.0.2.0-1 oracle-instantclient12.1-sqlplus-12.1.0.2.0-1 

Kopia demo uczynić pliki

Instalator spodziewa się, że plik * .mk być w /usr/share/oracle/12.1/client64 ale Instalacja pakietu yum umieszcza je w /usr/share/oracle/12.1/client64/demo.

sudo cp /usr/share/oracle/12.1/client64/demo/* /usr/share/oracle/12.1/client64 

Zmienić .bashrc

Dodaj poniższe linie do pliku ~/.bashrc

export ORACLE_HOME=/usr/lib/oracle/12.1/client64 
export LD_LIBRARY_PATH=/usr/lib/oracle/12.1/client64/lib 
export PATH=$ORACLE_HOME:$PATH 

teraz pozyskać plik

source ~/.bashrc 

Aktualizacja CPAN i DBI

Aktualizacja CPAN i DBI do najnowszej

cpan> install CPAN 
cpan> reload cpan 
cpan> install DBI 

zainstalować DBD :: Oracle

cpan> install DBD::Oracle 
+0

Działa dla 12.2 64bit, ale są ostrzeżenia/błędy. (Size_t konflikty z% d formatem, głównie.) Wielkie dzięki – Otheus

Powiązane problemy