2013-07-18 14 views
7

wykonamnie można zainstalować ruby-oci8 na Ubuntu 12.04LTS

$ bundle install 

dla mojej aplikacji szyn ... (3.2.8)

rację, kiedy dojdzie do Ruby-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. 

Zrobiłem wszystko z każdej witryny i forum (zwłaszcza tutaj). To, co czuję, było najbliższe ... http://jigyasamakkar.com/ruby-oci8-with-rails-3-1-on-ubuntu/

Jaki jest najlepszy sposób rozwiązania tego problemu?

+0

Próbuję dowiedzieć się, jak to zainstalować. To dziwne, ale wygląda na to, że musisz mieć zainstalowany Oracle Oracle na kliencie! Jeśli znajdziesz to dziwne. Twój błąd: Komunikat o błędzie: nie można uzyskać wersji Oracle z sqlplus wydaje się wskazywać na to. W powiązaniu z rozwiązaniem, o którym wspomniałeś, on również odnosi się do instalacji Oracle. Nie jest to zbyt dobrze wyjaśnione w tej części -> "Powinno być ustawione na miejsce instalacji Oracle" –

Odpowiedz

5

Niedawno musiałem zainstalować klejnot oracle + ruby, tutaj są instrukcje dla mac (ale będzie działać równie dobrze dla ubuntu). Pełne instrukcje znajdują się na stronie:

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

Kluczem jest to, że gem ruby-oci musi wiedzieć, gdzie przechowywane są dynamiczne biblioteki. Ubuntu trzeba ustawić: LD_LIBRARY_PATH

Grab następujące pliki:

  • 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

Wyciąg je i umieścić je gdzieś, a następnie dodać następujące zmienne środowiskowe.Zobacz link, aby uzyskać szczegółowe instrukcje.

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 

Objaśnienie zmiennych środowiskowych:

ORACLE_BASE: Jeżeli wszystkie pliki są przechowywane ORACLE_HOME: droga do rzeczywistej klienta LD_LIBRARY_PATH: powinien wskazywać katalogu lib, zrobić upewnij się, że masz tutaj skompresowany plik ZIP SDK TNS_ADMIN: gdzie znaleźć twój plik TNS_ADMIN (niekoniecznie potrzebny do klejnotu ruby-oci)

+0

Dzięki, to pomoże wszystkim, którzy są na różnych platformach! – harmonickey

+0

Musiałem wprowadzić kilka poprawek w $ ORACLE_HOME: 'ln -s sdk/include include'' ln -s. lib' 'ln -s libclntsh.dylib.11.1 libclntshdylib' – aceofspades

+0

Nie wiem, czy jest to sprawa Linuxa na Maca, czy też zmieniły się nazwy plików, ale dla mnie, z Linux Mint i Instant Client 11.2,' mv * dylib */usr/local/oracle/product/instantclient_64/11.2.0.3.0/lib/'(z wpisu na blogu" codiez ") nie działa. W końcu zdałem sobie sprawę, że muszę zmienić tę linię na 'mv * so */usr/local/oracle/product/instantclient_64/11.2.0.3.0/lib /'. – pjd

2

Aby ruby-oci8 działał, ważne jest, aby zainstalować natychmiastowego klienta, natychmiastowy pakiet SDK klienta i klienta natychmiastowego sqlplus, gdy jesteśmy przy nim. Jest to dobre narzędzie, aby mieć :)

Najlepszym źródłem mogę znaleźć w Internecie (działa jak czar) wynosi od help.ubuntu.com tak dobrym źródłem autorytatywnym:

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

Wykorzystuje obroty zainstalować natychmiastowego klienta, który można wykonać przez kosmitę. W każdym razie wszystko tam jest wyjaśnione.

Aby uzyskać połączenie OCI w kodzie, należy skonfigurować zmienną środowiskową TNS_ADMIN. Umieszczam go w tym samym miejscu, o którym mowa w rozwiązaniu społeczności Ubuntu (w tym samym miejscu, gdzie skonfigurowano ORACLE_HOME). Używam tego samego standardu folderów, co zwykle znajduje się w oracle rdbms: network/admin.

co dla mnie było: sudo vi /etc/profile.d/oracle.sh eksport ORACLE_HOME =/usr/lib/oracle/11.1.0.1/klient TNS_ADMIN export =/usr/lib/oracle/network/admin

Następnie umieść folder tnsnames.ora w folderze TNS_ADMIN.

Kiedy to się skończy, po prostu zainstaluj klejnot.

Klejnot rzuci pewne błędy/ostrzeżenie, ale nie są one zbyt ważne i nadal działa. Uruchom ponownie sesję, aby pobrać zmienne środowiskowe.

+0

Właściwie to moim rozwiązaniem było zainstalowanie zarówno klienta, jak i SDK. Następnie wskaż instalację gem oci8, aby wskazać zarówno klienta, jak i sdk poprzez jego opcje. W końcu potrzebował sdk, ponieważ nie mógł znaleźć pliku oci.h. – harmonickey

+0

Myślę, że znalazłem najlepszy zasób, aby uzyskać natychmiastowy klient = = Muszę zmodyfikować odpowiedź całkowicie =] –

Powiązane problemy