Oracle

Rédigé par Paulo Aucun commentaire
Classé dans : Linux Mots clés : linux, oracle, php-oci8, perl-DBD-Oracle

Just for me :
résolution du problème récurent du triplet Php, Perl, et surtout Oracle...

 

Pense bête pour BiBi concernant le problème PHP, Oracle, Perl:

  1. php-oci8 en version 5.4.26 a une dépendance sur "libocci.so.12.1" et "libclntsh.so.12.1"
    Ces librairies sont apportées par le rpm "oracle-instantclient12.1-basic".
    Par contre, merci Oracle, une fois le rpm installé, il ne "monte" pas les librairies demandées (ldconfig -v): pour ce faire, il est necessaire de creer un fichier conf dans "/etc/ld.so.conf.d" qui contient le path de oracleclient c.a.d "/usr/lib/oracle/12.1/lib" et enfin de lancer un chti "ldconfig".
     
  2. php-DBD-Oracle en version 1.62 a une dépendance sur ""libocci.so.11.1" : ce qui fait installer 2 oracleinstantclient (11 et 12) : moche !
    Du coup, j'ai récupéré le tar sur Cpan en version 1.70 qui nécessite OracleInstantClient 12'.
    Par contre, le rpm n'existe pas donc je l'ai fabriqué....
    Tant qu'à faire j'ai mis oracleinstantclient en require et j'ai monté les librairies dans le post (en fait, j'ai créé un rpm qui s'occupe de tous ça).

Résultat :
   Sur nos CentOS 6.5, on a perl-DBD-Oracle en 1.70 et php-oci8 en 5.4.26 avec toutes les dépendances nécessaires


Un aperçu du premier rpm "homemade" de perl-DBD-Oracle :
 

%define debug_package %{nil}
%define client  12.1.0.1
Summary: DBD-Oracle module for perl
Name: perl-DBD-Oracle
Version: 1.70
Release: 1.Paulo
License:  GPL+ or Artistic
Group: Development/Libraries
Source0: DBD-Oracle-%{version}.tar.gz
Source1: demo.mk
Url: http://www.cpan.org
BuildRoot: %{_tmppath}/perl-DBD-Oracle-buildroot/
BuildRequires: perl >= 0:5.6.1, perl(DBI)
BuildRequires: perl(ExtUtils::MakeMaker)
BuildRequires: oracle-instantclient12.1-devel
#<jpc>
Requires: reqOracle
#</jpc>
Requires:  perl(:MODULE_COMPAT_%(eval "`%{__perl} -V:version`"; echo $version))
# the version requires is not automatically picked up
Requires: perl(DBI) >= 1.51

%description
DBD-Oracle module for perl

%pre
...

 

Pareil pour le rpm maison qui permet de faire fonctionner toute cette bouze :
 

Name:       reqOracle
Summary:    Provide des librairie Oracle
Version:    1.0 
Release:    1.Paulo
License:    GPL-v3
URL:        http://cornilyon.fr/pluxml/
Group:      Applications/System
BuildRoot:  %{_tmppath}/%{name}-%{version}-%{release}-buildroot

Requires: oracle-instantclient12.1-basic
Provides: libocci.so.12.1()(64bit)
Provides: libclntsh.so.12.1()(64bit)


%description
Configuration pour Client oracle

%prep

%post
echo '/usr/lib/oracle/12.1/client64/lib/' > /etc/ld.so.conf.d/oracle12.conf
ldconfig

%clean
rm -rf $RPM_BUILD_ROOT

%files

%changelog
* Wed Apr 09 2014 - MSN Lyon - JPC/PJH/DV - <Ma Messagerie> 1.0-1.Paulo
- Version initiale

Voici, comment le tout s'articule :
- le client installe perl-DBD-Oracle
- ce paquet requiert et lance automagiquement  "reqOracle"
- celui-ci installe et configure (ldconfig) "oracle-instantclient12.1-basic"
- ouf, c'est finit !

Je sais, le "echo" dans le poste n'est pas trés élégant   :(

Les commentaires sont fermés.