2014-10-05 28 views
8

Próbuję zainstalować moduł Perl DBD :: Oracle na moim serwerze RHEL6.1. Czyniąc tak, ja po następujących kroków:Błąd podczas instalacji DBD :: Oracle

  1. Montaż następujących RPM:

    • Oracle instantclient12.1-basic-12.1.0.2.0-1.x86_64.rpm
    • wyrocznię -instantclient12.1 devel-12.1.0.2.0-1.x86_64.rpm
    • Oracle instantclient12.1-SQLPLUS-12.1.0.2.0-1.x86_64.rpm
  2. eksportowanie zmienne środowiskowe

    export ORACLE_HOME=/usr/lib/oracle/12.1/client64

    export LD_LIBRARY_PATH=/usr/lib/oracle/12.1/client64/lib

  3. Instalowanie DBD :: Oracle

    cpan -i DBD::Oracle

Czyniąc tak, to daje następujący komunikat o błędzie:

Installing on a linux, Ver#2.6 
Using Oracle in /usr/lib/oracle/12.1/client64 
DEFINE _SQLPLUS_RELEASE = "1201000200" (CHAR) 
Oracle version 12.1.0.2 (12.1) 

     Unable to locate an oracle.mk or other suitable *.mk 
     file in your Oracle installation. (I looked in 
     /usr/lib/oracle/12.1/client64/rdbms/demo/demo_xe.mk /usr/lib/oracle/12.1/client64/rdbms/lib/oracle.mk /usr/lib/oracle/12.1/client64/rdbms/demo/oracle.mk /usr/lib/oracle/12.1/client64/rdbms/demo/demo_rdbms.mk /usr/lib/oracle/12.1/client64/rdbms/demo/demo_rdbms64.mk /usr/lib/oracle/12.1/client64/rdbms/lib/ins_rdbms.mk /usr/share/oracle/12.1/client64/demo.mk under /usr/lib/oracle/12.1/client64) 

     The oracle.mk (or demo_rdbms.mk) file is part of the Oracle 
     RDBMS product. You need to build DBD::Oracle on a 
     system which has one of these Oracle components installed. 
     (Other *.mk files such as the env_*.mk files will not work.) 
     Alternatively you can use Oracle Instant Client. 

     In the unlikely event that a suitable *.mk file is installed 
     somewhere non-standard you can specify where it is using the -m option: 
       perl Makefile.PL -m /path/to/your.mk 

     See the appropriate README file for your OS for more information and some alternatives. 

    at Makefile.PL line 1187. 
Warning: No success on command[/usr/bin/perl Makefile.PL INSTALLDIRS=site] 
    PYTHIAN/DBD-Oracle-1.74.tar.gz 
    /usr/bin/perl Makefile.PL INSTALLDIRS=site -- NOT OK 
Running make test 
    Make had some problems, won't test 
Running make install 
    Make had some problems, won't install 

Co jest nie tak z procesem instalacji? Śledziłem przewodnik this.

Odpowiedz

21

Po instalacji i konfiguracji Oracle Instant Client, należy użyć normalnych czynności kompilacji bez narzędzia cpan i przekazać opcję -l do Makefile.PL

  1. Pobierz pakiet tar.gz i rozpakować go

  2. zbudować

    perl Makefile.PL -l 
    make && make test 
    
  3. Install

    make install 
    
+0

Zmarnowałem pół dnia próbując to znaleźć. Dzięki, to rozwiązało mój problem. Ale co właściwie robi flaga -l? – Arran

+0

samo tutaj! wszędzie, gdzie szukałem, ludzie byli napominani, żeby czytali plik README, ale plik mówi bardzo mało o InstantClient! Jestem w szoku, że doszło do dodania -l. Święte dymy. DZIĘKUJĘ CI! – Glenn

+0

Jeszcze jeden szczegół: wśród moich nieudanych prób zainstalowania rzeczy ding-dong, zrobiłem COŚ, która spowodowała utworzenie dwóch miękkich linków: ## sudo ln -s libclntsh.so.11.1 libclntsh.so ## sudo ln -s libocci.so.11.1 libocci.so ## I tak, sprawdziłem, że tworzenie tych linków nie było wystarczające; magia polegała na dodaniu tego "-l" jak wyżej. – Glenn

13

Właściwie, jeśli chcesz używać obroty i cpan zainstalować, trzeba ustawić ORACLE_HOME do folderu lib, a nie tylko client64 i dodać sqlplus do ścieżki:

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

z ten cpan -i DBD::Oracle nie zwraca błędu.

+0

Czy zainstalowałeś natychmiast klient rpms lub cała baza danych Oracle? Kiedy instaluję z szybkim klientem, nie widzę demo/demo.mk wspomnianego w błędzie. – partyd

0

Jedyną rzeczą, której instalator CPAN nie może znaleźć, jest odpowiedni plik * .mk. Oracle musi grać w grę kot i myszkę z instalatorem CPAN, ponieważ instalator szuka w kilku lokalizacjach kilku nazw plików.

użyłem Komenda

locate -r '\.mk$' 

znaleźć to demo.mk znajduje się teraz w /usr/lib/oracle/12.1/client64/demo/ zamiast /usr/lib/oracle/12.1/client64/

Stworzyłem więc dowiązanie symboliczne

sudo ln -s /usr/share/oracle/12.1/client64/demo/demo.mk /usr/share/oracle/12.1/client64/demo.mk 

i instalator CPAN udało.

+0

Czy wykonałeś pełną instalację DB lub tylko klienta natychmiastowego? Nie mogę znaleźć tego pliku demo/demo.mk podczas instalacji tylko natychmiastowego klienta. – partyd

Powiązane problemy