Oracle Instant Client telepítése Ubuntura, azaz olvassunk configure fájlt?

Motiváció

Egy feladat miatt kénytelen voltam Oracle klienst telepíteni Ubuntun futó Apache, PHP5-el felvértezett szerveremre. Mikor leültem a gép elé, hogy elkezdjem a telepítést, azt hittem hogy pofonegyszerű lesz: szimplán felnyitok egy Synaptic-ot és kiválasztom az oci8 és PDO_OCI kiegészítőket PHP5-höz, installálásra. Itt jött a meglepetés, amikor nem találtam ezeket a Sinaptic-ban. Mint minden számítógépet éríntő problémára, most erre is felnyitottam jó öreg Google keresőnket.

Oracle Instant Kliens és SDK telepítés

Google segítségével meg is találtam Ubuntu segédletét. Minek alapján bele is kezdtem a telepítésbe.

A leírás majdnem teljesen jó is, csak kettő dolog hibádzik:

  1. nincs benne a PDO_OCI telepítése,
  2. a 11.2-es Oracle Instant Client nem működik a linuxos PDO_OCI-val.

A 10.2-es klienst ugyanúgy kell installálni mint a 11.2 (persze telepítésközben a megfelelő helyeken 11.2 helyett 10.2-t kell írni). A fentiket figyelembe véve telepítsük az Oracle Instant Cliens-t és SDK-t.

Oci driver telepítése

Miután megvagyunk a kliens és SDK installálásával a PHP-val még mindig nem fogunk tudni belépni a távoli Oracle szerverre, hiszen hiányzik a pdo_oci driver (phpinfo() lapon a PDO szekció). A PDO_OCI telepítésére a következő oldalról mazsoláztam ki a megoldást: http://lacot.org/blog/2009/11/03/ubuntu-php5-oci8-and-pdo_oci-the-perfect-install.html
A fent említett oldal segítségével a következőképpen alakul a telepítés:

  1. a jó öreg (2005-óta nem frissített) PDO_OCI-nak kell egy-két könyvtár és szimbolikus link:
    sudo mkdir /usr/lib/oracle<br />
    sudo mkdir /usr/lib/oracle/10.2<br />
    sudo mkdir /usr/lib/oracle/10.2/client<br />
    cd /usr/lib/oracle/10.2/client/<br />
    sudo ln -s /usr/local/lib/instantclient_10_2/sdk/include/ include<br />
    sudo ln -s /usr/local/lib/instantclient_10_2/ lib
  2. PDO_OCI letöltése, befordítása és telepítése:
    pecl download PDO_OCI<br />
    tar xzvf PDO-1.0.3.tgz<br />
    cd PDO_OCI-1.0/<br />
    cp /usr/local/lib/instantclient_10_2/sdk/include/*.h .<br />
    phpize<br />
    ./configure --with-pdo-oci=instantclient,/usr,10.2<br />
    make<br />
    sudo make install
  3. php.ini beálítása:

    Ubuntu alatt kettő darab php.ini található: /etc/php5/apache2/php.ini és /etc/php5/cli/php.ini mindkét fájlba a következő sort kell adnunk:

    extension = pdo_oci.so

    Ezekután már csak újra kell indítani az Apache szerverünket:

    sudo /etc/init.d/apache2 reload

Ezzel szerverünk már kész külső Oracle szerverhez csatlakozni, PHP-n keresztül.

Configure fájl olvasása

Most pedig itt az ideje, hogy megmagyarázzam alcímem. Ha az Oci driver telepítésénél az első lépést kihagyjuk és nem hozzuk létre azokat a könyvtárakat és szimbolikus linkeket, akkor a második lépésben elakadunk a ./configure parancsnál a következő hibaüzenettel:
"I'm too dumb to figure out where the include dir is in your instant client install"
Vagy ha az include dir meg van, akkor ezzel:
"I'm too dumb to figure out where the libraries are in your instant client install"
Ez azért van mert a configure fájlt 2005 óta nem frissítették és azóta (szerencsénkre) megváltozott Ubuntuban egy kicsit a környezet. A megoldásra a configure fájl olvasásából jöttem rá. Ami egy Oracle nagyságrendű szoftverfejlesztéssel foglalkozó cég esetében kicsit meglepő.

Utóirat

Még azt itt megemlítem, hogyha valakinek szüksége van az Oracle Instant Client 11.2-es verzióra, az a PHP.net-ről tud letölteni patch-et a PDO_OCI driver-hez. Ez a patch azért kell, mert mint fentebb említettem a PDO_OCI nem működik a 11.2-es verzióval, ha jól tudom az utolsó Instant Client verzó ami működik vele az a 11.1-es.

Ubuntumról

Eme egész műveletet egy Ubuntu 11.04 – Natty Narwhal, 64bit-es kiadásán csináltam. Én teljes egészében ezt a rendszert használom szoftver fejlesztésre és internetezésre. Apache PHP és MySQL telepítésére a ezt a leírást használtam annak idején.

Ha leírásom segítségére volt, kérem klikkeljen az oldal tetején található Facebook Kedvelem gombra.
Szabolcs