A instalação do CentOS utilizada para escrever este post é resultado dos procedimentos publicados no post Como criar uma máquina virtual no servidor Xen Centos 5 e instalar o CentOS pela rede e a instalação do Tornado, bem como do Python 2.6, que é pré-requisito para o Tornado que não está disponível no CentOS 5.8 é resultado dos procedimentos publicados no post Configurar o CentOS 5 para suporte ao Tornado no Python 2.6, os dois aqui mesmo na Compostagem Digital, portanto para ter uma instalação como esta de uma conferida neles.
Continuando …
Para instalar o Oracle Instant Client precisamos baixar os pacotes Basic e SDK do Oracle Instant Client da própria Oracle, veja como fazer isto neste meu outro post Como configurar o PHP com suporte Oracle no Fedora – extension oci8, não é necessário ler o artigo inteiro, já na primeira parte há a explicação de como proceder para realizar o download do Oracle Instant Client e isto é o suficiente para você ter sucesso nesta primeira etapa e depois voltar pra cá, que estou te esperando.
Considerando que tu já fez o download do Oracle Instant Client, vou começar a mostrar como instalar e configurar o ambiente.
Comece pela instalação do pacote Oracle Instant Client Basic, com o comando abaixo:
yum install --nogpgcheck oracle-instantclient11.2-basic-11.2.0.3.0-1.i386.rpm
O parâmetro –nogpgcheck ignora a checagem da assinatura do pacote.
Se tudo correu bem, algo como isto abaixo deve estar sendo exibido na sua tela:
Loaded plugins: fastestmirror, security Loading mirror speeds from cached hostfile * base: centos.pop.com.br * epel: mirror.cogentco.com * extras: centos.pop.com.br * updates: centos.pop.com.br Setting up Install Process Examining oracle-instantclient11.2-basic-11.2.0.3.0-1.i386.rpm: oracle-instantclient11.2-basic-11.2.0.3.0-1.i386 Marking oracle-instantclient11.2-basic-11.2.0.3.0-1.i386.rpm to be installed Resolving Dependencies --> Running transaction check ---> Package oracle-instantclient11.2-basic.i386 0:11.2.0.3.0-1 set to be updated --> Finished Dependency Resolution Dependencies Resolved =========================================================================================================================================== Package Arch Version Repository Size =========================================================================================================================================== Installing: oracle-instantclient11.2-basic i386 11.2.0.3.0-1 /oracle-instantclient11.2-basic-11.2.0.3.0-1.i386 168 M Transaction Summary =========================================================================================================================================== Install 1 Package(s) Upgrade 0 Package(s) Total size: 168 M Is this ok [y/N]: y
Alí em cima pressione “y” para instalar.
Downloading Packages: Running rpm_check_debug Running Transaction Test Finished Transaction Test Transaction Test Succeeded Running Transaction Installing : oracle-instantclient11.2-basic 1/1 Installed: oracle-instantclient11.2-basic.i386 0:11.2.0.3.0-1 Complete!
Terminado a instalação do pacote Oracle Instant Client Basic, repita a operação para instalar o pacote Oracle Instant Client Devel,como segue:
yum install --nogpgcheck oracle-instantclient11.2-devel-11.2.0.3.0-1.i386.rpm
Tu deves estar vendo algo assim na console:
Loaded plugins: fastestmirror, security Loading mirror speeds from cached hostfile * base: mirror.linux.duke.edu * epel: mirror.cogentco.com * extras: centos.netnitco.net * updates: centos.digitalcompass.net Setting up Install Process Examining oracle-instantclient11.2-devel-11.2.0.3.0-1.i386.rpm: oracle-instantclient11.2-devel-11.2.0.3.0-1.i386 Marking oracle-instantclient11.2-devel-11.2.0.3.0-1.i386.rpm to be installed Resolving Dependencies --> Running transaction check ---> Package oracle-instantclient11.2-devel.i386 0:11.2.0.3.0-1 set to be updated --> Finished Dependency Resolution Dependencies Resolved =========================================================================================================================================== Package Arch Version Repository Size =========================================================================================================================================== Installing: oracle-instantclient11.2-devel i386 11.2.0.3.0-1 /oracle-instantclient11.2-devel-11.2.0.3.0-1.i386 1.9 M Transaction Summary =========================================================================================================================================== Install 1 Package(s) Upgrade 0 Package(s) Total size: 1.9 M Is this ok [y/N]: y
De novo pressione o “y” para instalar e aguarde o término da instalação:
Downloading Packages: Running rpm_check_debug Running Transaction Test Finished Transaction Test Transaction Test Succeeded Running Transaction Installing : oracle-instantclient11.2-devel 1/1 Installed: oracle-instantclient11.2-devel.i386 0:11.2.0.3.0-1 Complete!
Legal, simples até agora, não se preocupe, vai continuar sendo simples, siga em frente.
Crie um arquivo com o nome instantclient.sh e coloque o conteúdo que segue abaixo nele:
#!/bin/bash export ORACLE_HOME=/usr/lib/oracle/11.2/client export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:$ORACLE_HOME
É bom saber que o ORACLE_HOME pode ser diferente, pois tu podes ter instalado outra versão do Oracle Instant Client, para saber qual o caminho correto da tua instalação, use o famigerado comando ls como segue:
ls -l /usr/lib/oracle
Agora copie este arquivo instantclient.sh para a pasta /etc/profile.d:
cp instantclient.sh /etc/profile.d/
O que fizemos ai em cima é para dizer ao sistema operacional que ao abrir uma sessão de usuário ele deve atribuir as variáveis ORACLE_HOME e LD_LIBRARY_PATH, necessárias para o funcionamento do Oracle Instant Client.
Feche a sessão atual e faça login novamente para forçar o carregamento destes novos parâmetros.
Feito isto certifique-se que funcionou executando o comando abaixo e veja a saída, ela deve apontar para o caminho da instalação do Oracle Instant Client, conforme colocamos no arquivo instantclient.sh:
echo $ORACLE_HOME
A saída para o comando deve ser algo como isto abaixo se você tiver a mesma versão do Oracle Instant Client que eu usei.
/usr/lib/oracle/11.2/client
Joinha, mais um pouco eu te liberto desta saga, pois agora ainda temos que ajustar algumas configurações.
Crie o arquivo cx_Oracle.conf, com o conteúdo a seguir:
/usr/lib/oracle/11.2/client/lib
Ta bom, vou falar novamente, mas não esqueça por favor: O diretório acima na sua instalação pode ser outro.
Copie este arquivo para /etc/ld.so.conf.d/:
cp cx_Oracle.conf /etc/ld.so.conf.d/
Execute o comando abaixo para atualizar os paths das libs:
ldconfig
“Agora vem a parte mais fácil da história.”
Precisamos fazer o Python 2.6 acessar Oracle a partir do Oracle Instant Client, para realizar esta “mágica”, basta instalar a extensão cx_Oracle no Python 2.6.
Sempre é bom começar pelo básico, mas essencial, então faça download do cx_Oracle a partir do link abaixo:
Para instalar a partir de um pacote tarball precisaremos compilar a extension cx_Oracle novamente, assim temos que ter certeza de que nosso ambiente pode fazer isto.
A sua vez é agora, tenha certeza de ter instalado o pacote de desenvolvimento do Python 2.6 e o compilador gcc, faça isto com o comando que segue:
yum install python26-devel gcc
Ok! Já sabemos que nosso ambiente será capaz de compilar a cx_Oracle e já fizemos o download, agora descompacte o arquivo do cx_Oracle:
tar zxvf cx_Oracle-5.1.1.tar.gz
Entre na pasta que tu acabou de extrair:
cd cx_Oracle-5.1.1
Agora agradeça o Guido van Rossum e depois execute o comando abaixo:
python26 setup.py install
Umas “coisas” como estas devem ter sido exibidas pra ti:
running install running build running build_ext building 'cx_Oracle' extension gcc -pthread -fno-strict-aliasing -O2 -g -pipe -Wall -Wp,-D_FORTIFY_SOURCE=2 -fexceptions -fstack-protector --param=ssp-buffer-size=4 -m32 -march=i386 -mtune=generic -fasynchronous-unwind-tables -D_GNU_SOURCE -fPIC -fwrapv -I/usr/kerberos/include -DNDEBUG -O2 -g -pipe -Wall -Wp,-D_FORTIFY_SOURCE=2 -fexceptions -fstack-protector --param=ssp-buffer-size=4 -m32 -march=i386 -mtune=generic -fasynchronous-unwind-tables -D_GNU_SOURCE -fPIC -fwrapv -fPIC -I/usr/include/oracle/11.2/client -I/usr/include/python2.6 -c cx_Oracle.c -o build/temp.linux-i686-2.6-11g/cx_Oracle.o -DBUILD_VERSION=5.1.1 creating build/lib.linux-i686-2.6-11g gcc -pthread -shared build/temp.linux-i686-2.6-11g/cx_Oracle.o -L/usr/lib/oracle/11.2/client/lib -L/usr/lib -lclntsh -lpython2.6 -o build/lib.linux-i686-2.6-11g/cx_Oracle.so running install_lib copying build/lib.linux-i686-2.6-11g/cx_Oracle.so -> /usr/lib/python2.6/site-packages running install_egg_info Writing /usr/lib/python2.6/site-packages/cx_Oracle-5.1.1-py2.6.egg-info
Caraca, agora já deve estar funcionado, vamos testar?
Execute os comandos abaixo, simples assim:
python26
Bem vindo ao Python 2.6:
Python 2.6.8 (unknown, Apr 12 2012, 20:59:00) [GCC 4.1.2 20080704 (Red Hat 4.1.2-52)] on linux2 Type "help", "copyright", "credits" or "license" for more information. >>>
Tente importar o módulo, se não retornar nenhum erro sorria você está sendo filmado parabéns.
>>> import cx_Oracle >>>
Meu serviço termina aqui, o seu deve estar só começando.
Lembrando, agora vou configurar este servidor para ser um proxy reverso Nginx, quando terminar faço referência aqui.
3. Set the library loading path in your environment to the directory in Step 2 (“instantclient”). On many UNIX platforms, LD_LIBRARY_PATH is the appropriate environment variable. On Windows, PATH should be used.
CurtirCurtir
tks a lot.
CurtirCurtir