2013-07-18 21 views
7

tôi thựcCan not Install ruby-oci8 trên Ubuntu 12.04LTS

$ bundle install 

Đối với ứng dụng ray của tôi ... (3.2.8)

Ngay khi nó được cho 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. 

Tôi đã làm mọi thứ từ mọi trang web và diễn đàn (đặc biệt là từ đây). Điều này tôi cảm thấy giống như là gần nhất ... http://jigyasamakkar.com/ruby-oci8-with-rails-3-1-on-ubuntu/

Cách tốt nhất để giải quyết vấn đề này là gì?

+0

Tôi đang cố gắng tìm hiểu cách cài đặt nó. Thật kỳ lạ nhưng có vẻ như bạn sẽ cần phải có oracle DB thực sự được cài đặt trên máy khách! Nếu thấy lạ. Lỗi của bạn: Thông báo lỗi: không thể tải phiên bản Oracle từ sqlplus dường như chỉ ra điều đó. Trong liên kết với một giải pháp mà bạn đề cập, ông cũng đề cập đến một cài đặt oracle. Nó không phải là giải thích rất tốt về phần đó -> "Nó nên được thiết lập để nơi Oracle của bạn được cài đặt" –

Trả lời

5

Gần đây tôi đã cài đặt đá quý oracle + ruby, dưới đây là hướng dẫn dành cho mac (nhưng sẽ hoạt động tốt với ubuntu). Hướng dẫn đầy đủ tại:

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

Điều quan trọng là viên ngọc ruby-OCI cần phải biết được nơi các thư viện động được lưu trữ. Đối với ubuntu bạn cần phải thiết lập: LD_LIBRARY_PATH

Grab các tập tin sau đây:

  • 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

Trích xuất chúng và đặt chúng ở đâu đó, và sau đó thêm các biến môi trường sau đây.Xem liên kết để được hướng dẫn chi tiết.

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 

Giải thích về biến môi trường:

ORACLE_BASE: đâu tất cả các tập tin được lưu trữ ORACLE_HOME: Đường dẫn đến các khách hàng thực tế LD_LIBRARY_PATH: nên trỏ thư mục lib, hãy chắc chắn rằng bạn có tệp zip SDK được trích xuất tại đây TNS_ADMIN: nơi để tìm tệp TNS_ADMIN của bạn (không thực sự cần thiết cho đá quý ruby-oci)

+0

Cảm ơn, điều này sẽ giúp mọi người là nền tảng chéo! – harmonickey

+0

Tôi phải thực hiện một vài điều chỉnh trong $ ORACLE_HOME: 'ln -s sdk/include include'' ln -s. lib' 'ln -s libclntsh.dylib.11.1 libclntshdylib' – aceofspades

+0

Tôi không biết đây có phải là điều Linux hay Mac hay nếu tên tệp đã thay đổi, nhưng đối với tôi, với Linux Mint và Instant Client 11.2,' mv * dylib */usr/local/oracle/product/instantclient_64/11.2.0.3.0/lib/'(từ bài đăng blog" codiez "được liên kết ở trên) không hoạt động. Cuối cùng tôi nhận ra rằng tôi cần phải thay đổi dòng đó thành 'mv * so */usr/local/oracle/product/instantclient_64/11.2.0.3.0/lib /'. – pjd

2

Đối với ruby-oci8 để làm việc, điều quan trọng là cài đặt ứng dụng khách tức thì, SDK khách hàng tức thì và ứng dụng khách sqlplus khi chúng tôi đang ở đó. Đó là một công cụ tốt để có :)

Tài nguyên tốt nhất tôi có thể tìm thấy trực tuyến (hoạt động giống như một nét duyên dáng) là từ help.ubuntu.com do đó, một nguồn có thẩm quyền tốt:

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

Nó sử dụng RPM để cài đặt ứng dụng khách tức thì có thể được thực hiện thông qua người ngoài hành tinh. Dù sao thì tất cả đều được giải thích trong đó.

Để OCI kết nối trong mã của bạn, hãy định cấu hình biến môi trường TNS_ADMIN. Tôi đặt nó vào cùng một vị trí được đề cập trong giải pháp cộng đồng ubuntu (trong cùng một vị trí nơi ORACLE_HOME được cấu hình). Tôi sử dụng cùng một thư mục tiêu chuẩn như những gì thường được tìm thấy với oracle rdbms: network/admin.

nào đối với tôi là: sudo vi /etc/profile.d/oracle.sh xuất khẩu ORACLE_HOME =/usr/lib/oracle/11.1.0.1/client xuất khẩu TNS_ADMIN =/usr/lib/oracle/mạng/admin

Sau đó, đặt tnsnames.ora của bạn vào thư mục TNS_ADMIN.

Khi đã xong, chỉ cần cài đặt đá quý.

Đá quý S throw ném một số lỗi/cảnh báo nhưng chúng không phải là rất quan trọng và nó vẫn hoạt động. Khởi động lại phiên của bạn để nhận các biến môi trường.

+0

Trên thực tế giải pháp của tôi đã kết thúc được cài đặt cả khách hàng và SDK. Sau đó trỏ oci8 gem install để trỏ tới cả client và sdk thông qua các tùy chọn của nó. Nó đã kết thúc cần sdk bởi vì nó không thể tìm thấy tập tin oci.h. – harmonickey

+0

Tôi nghĩ rằng tôi đã tìm thấy nguồn tài nguyên tốt nhất để khách hàng truy cập tức thì =] Tôi cần sửa đổi câu trả lời của mình hoàn toàn =] –

Các vấn đề liên quan