2013-07-18 17 views
7

eseguonon possono installare rubino oci8 su Ubuntu 12.04LTS

$ bundle install 

Per la mia applicazione Rails ... (3.2.8)

Proprio quando si arriva al rubino-oci8 ...

Gem::Installer::ExtensionBuildError: ERROR: Failed to build gem native extension. 

    /home/ubuntu/.rvm/rubies/ruby-1.9.3-p448/bin/ruby extconf.rb 
checking for load library path... 
    LD_LIBRARY_PATH... 
    checking /usr/lib/oracle/12.1/client/... no 
    checking ld.so.conf... no 
checking for cc... ok 
checking for gcc... yes 
checking for LP64... no 
checking for sys/types.h... yes 
checking for ruby header... ok 
Get the version of Oracle from SQL*Plus... *** extconf.rb failed *** 
Could not create Makefile due to some reason, probably lack of 
necessary libraries and/or headers. Check the mkmf.log file for more 
details. You may need configuration options. 

Provided configuration options: 
    --with-opt-dir 
    --without-opt-dir 
    --with-opt-include 
    --without-opt-include=${opt-dir}/include 
    --with-opt-lib 
    --without-opt-lib=${opt-dir}/lib 
    --with-make-prog 
    --without-make-prog 
    --srcdir=. 
    --curdir 
    --ruby=/home/ubuntu/.rvm/rubies/ruby-1.9.3-p448/bin/ruby 
    --with-instant-client 
    --without-instant-client 
/home/ubuntu/.rvm/gems/ruby-1.9.3-p448/gems/ruby-oci8-2.1.5/ext/oci8/oraconf.rb:760:in `get_version': RuntimeError (RuntimeError) 
    from /home/ubuntu/.rvm/gems/ruby-1.9.3-p448/gems/ruby-oci8-2.1.5/ext/oci8/oraconf.rb:709:in `initialize' 
    from /home/ubuntu/.rvm/gems/ruby-1.9.3-p448/gems/ruby-oci8-2.1.5/ext/oci8/oraconf.rb:320:in `new' 
    from /home/ubuntu/.rvm/gems/ruby-1.9.3-p448/gems/ruby-oci8-2.1.5/ext/oci8/oraconf.rb:320:in `get' 
    from extconf.rb:18:in `<main>' 
--------------------------------------------------- 
Error Message: 
    cannot get Oracle version from sqlplus 
Backtrace: 
    /home/ubuntu/.rvm/gems/ruby-1.9.3-p448/gems/ruby-oci8-2.1.5/ext/oci8/oraconf.rb:760:in `get_version' 
    /home/ubuntu/.rvm/gems/ruby-1.9.3-p448/gems/ruby-oci8-2.1.5/ext/oci8/oraconf.rb:709:in `initialize' 
    /home/ubuntu/.rvm/gems/ruby-1.9.3-p448/gems/ruby-oci8-2.1.5/ext/oci8/oraconf.rb:320:in `new' 
    /home/ubuntu/.rvm/gems/ruby-1.9.3-p448/gems/ruby-oci8-2.1.5/ext/oci8/oraconf.rb:320:in `get' 
    extconf.rb:18:in `<main>' 
--------------------------------------------------- 
See: 
* http://ruby-oci8.rubyforge.org/en/HowToInstall.html 
* http://ruby-oci8.rubyforge.org/en/ReportInstallProblem.html 



Gem files will remain installed in /home/ubuntu/.rvm/gems/ruby-1.9.3-p448/gems/ruby-oci8-2.1.5 for inspection. 
Results logged to /home/ubuntu/.rvm/gems/ruby-1.9.3-p448/gems/ruby-oci8-2.1.5/ext/oci8/gem_make.out 

An error occurred while installing ruby-oci8 (2.1.5), and Bundler cannot continue. 
Make sure that `gem install ruby-oci8 -v '2.1.5'` succeeds before bundling. 

Ho fatto di tutto da ogni sito e forum (specialmente da qui). Questo mi sembra il più vicino ... http://jigyasamakkar.com/ruby-oci8-with-rails-3-1-on-ubuntu/

Qual è il modo migliore per risolvere questo problema?

+0

Sto cercando di scoprire come installarlo pure. È strano ma sembra che tu abbia bisogno di avere il DB oracle effettivamente installato sul client! Se lo trovi strano Errore: Messaggio di errore: impossibile ottenere la versione Oracle da sqlplus sembra indicare quello. Nel collegamento con una soluzione menzionata, si riferisce anche a un'installazione di Oracle. Non è spiegato molto bene su quella parte -> "Dovrebbe essere impostato su dove è installato Oracle" –

risposta

5

Recentemente ho dovuto installare oracle + ruby ​​gem, ecco le istruzioni per mac (ma funzionerebbe altrettanto bene per ubuntu). Le istruzioni complete sono a:

http://blog.codiez.co.za/2013/09/setup-oracle-instant-client-ruby-oci8-gem-mac/

La chiave è che la gemma rubino OCI ha bisogno di sapere dove le librerie dinamiche vengono memorizzati. Per Ubuntu è necessario impostare: LD_LIBRARY_PATH

Grab i seguenti file:

  • instantclient-basic-linux.x64-11.2.0.3.0.zip
  • instantclient-sqlplus-linux.x64-11.2 .0.3.0.zip
  • instantclient-sdk-linux.x64-11.2.0.3.0.zip

loro Estrarre e metterli da qualche parte, e poi aggiungere le seguenti variabili d'ambiente.Vedi il link per istruzioni dettagliate.

export ORACLE_BASE=/usr/local/oracle 
export ORACLE_HOME=$ORACLE_BASE/product/instantclient_64/11.2.0.3.0 
export PATH=$ORACLE_HOME/bin:$PATH 
export LD_LIBRARY_PATH=$ORACLE_HOME/lib:$DYLD_LIBRARY_PATH 
export TNS_ADMIN=$ORACLE_BASE/admin/network 

Spiegazione delle variabili d'ambiente:

ORACLE_BASE: Dove tutti i file sono memorizzati ORACLE_HOME: Il percorso per il cliente attuale LD_LIBRARY_PATH: deve puntare alla directory lib, fanno assicurati di aver estratto il file zip SDK qui TNS_ADMIN: dove trovare il tuo file TNS_ADMIN (non proprio necessario per la gemma ruby-oci)

+0

Grazie, questo aiuterà tutti coloro che sono multipiattaforma! – harmonickey

+0

Ho dovuto apportare alcune modifiche a $ ORACLE_HOME: 'ln -s sdk/include include'' ln -s. lib' 'ln -s libclntsh.dylib.11.1 libclntshdylib' – aceofspades

+0

Non so se si tratta di una cosa Linux vs Mac o se i nomi dei file sono cambiati, ma per me, con Linux Mint e Instant Client 11.2,' mv * dylib */usr/local/oracle/product/instantclient_64/11.2.0.3.0/lib/'(dal post del blog" codiez "linkato sopra) non ha funzionato. Alla fine ho capito che avevo bisogno di cambiare quella linea in 'mv * so */usr/local/oracle/product/instantclient_64/11.2.0.3.0/lib /'. – pjd

2

Per il funzionamento di ruby-oci8 è importante installare il client istantaneo, l'SDK del client istantaneo e il client istantaneo sqlplus mentre ci siamo. E 'un ottimo strumento per avere :)

La migliore risorsa che ho trovato on-line (funziona come un fascino) è da help.ubuntu.com così una buona risorsa autorevole:

https://help.ubuntu.com/community/Oracle%20Instant%20Client

usa rpm per installare il client istantaneo che può essere fatto attraverso straniero. Comunque è tutto spiegato lì.

Per ottenere l'OCI per la connessione nel codice, configurare una variabile di ambiente TNS_ADMIN. Lo metto nello stesso posto menzionato nella soluzione della comunità ubuntu (nello stesso punto in cui è configurato ORACLE_HOME). Io uso la stessa cartella standard di quello che si trova di solito con oracle rdbms: network/admin.

che per me era: sudo vi /etc/profile.d/oracle.sh export ORACLE_HOME =/usr/lib/oracle/11.1.0.1/cliente export TNS_ADMIN =/usr/lib/oracle/network/admin

Quindi inserisci i tuoi tnsnames.ora nella cartella TNS_ADMIN.

Una volta fatto, basta installare la gemma.

La gemma genererà alcuni errori/avvertenze ma non sono molto importanti e funzionano ancora. Riavvia la sessione per ottenere le variabili di ambiente.

+0

In realtà la mia soluzione ha finito per installare sia il client che l'SDK. Quindi punta l'installazione di oci8 gem per indicare sia il client che il sdk attraverso le sue opzioni. Finì per aver bisogno di sdk perché non riusciva a trovare il file oci.h. – harmonickey

+0

Penso di aver trovato la migliore risorsa per far funzionare il client istantaneo =] Ho bisogno di modificare completamente la mia risposta =] –