Oracle
 sql >> Teknologi Basis Data >  >> RDS >> Oracle

Pemasangan paket RODBC/ROracle di OS X Mavericks

Jawaban ini akan mencakup pemasangan RODBC dan ROracle di OS X, khususnya di Mavericks dan yang lebih baru.

Kedua paket sekarang perlu dibangun (dikompilasi) dari sumber. Ini berarti bahwa hal pertama yang Anda perlukan adalah mengunduh XCode dan "alat baris perintah" terkait sehingga Anda benar-benar memiliki sebuah kompiler. Cara Anda melakukannya telah berubah pada dasarnya di setiap versi OS X/XCode, tetapi jika Anda mulai Googling, Anda mungkin akan berakhir di sini.

Setelah Anda memilikinya...

RODBC

Sejak OS X 10.9 (Mavericks) Apple berhenti menyertakan file header SQL iODBC bersama dengan "alat baris perintah" yang biasa dipasang oleh pengguna R di OS X untuk membangun Rpackages dari sumber.

Jadi jika Anda mencoba membangun RODBC dari sumber di Mavericks pada titik ini, Anda akan mendapatkan kesalahan seperti:

konfigurasikan:kesalahan:"header ODBC sql.h dan sqlext.h tidak ditemukan"

Untuk memperbaikinya, Anda perlu mengunduh iODBC versi terbaru (www.iodbc.org), lalu membuka zip file dan mengatur jalur pencarian header dan pustaka ke lokasi di mana Anda meletakkan paket yang tidak di-zip. Jika Anda tidak tahu cara mengatur jalur pencarian Anda, Anda bisa meletakkan file header (sql.h dan sqlext.h) di /usr/include direktori, dan libiodbc.a file di /usr/lib direktori.

Maka Anda harus dapat melakukan

install.packages("RODBC",type = "source")

tanpa masalah. Agaknya ini akan bekerja dengan baik dengan proyek ODBC open source besar lainnya, unixODBC, juga, tapi saya belum mencobanya.

Saya telah menguji ini (dan metode homebrew di jawaban lain) di El Capitan dan keduanya masih berfungsi.

RORacle

Ini lebih rumit. Namun, ROracle dapat diinstal pada OS X (Saya telah mengujinya di Mountain Lion melalui El Capitan). Karena ROracle bergantung pada Oracle Instant Client, tidak ada binari yang tersedia untuk platform apa pun. Ada petunjuk instalasi rinci untuk paket di sini.

Untuk OS X, kita harus (kebanyakan) mengikuti instruksi Linux.

Pertama, unduh Oracle Instant Client yang sesuai, serta SDK, seperti yang diarahkan dalam instruksi Linuz.

Instruksi instalasi Linux menyebutkan menginstal klien dari RPM, yang akan menempatkan semuanya "di tempat yang tepat". Saya tidak dapat mengetahui apakah itu berlaku untuk OS X, jadi saya cukup membuka ritsleting klien di direktori yang saya buat dan menempatkan SDK di dalam direktori itu di /sdk .

Instruksi instalasi Linux kemudian mengarahkan kita untuk membuat tautan simbolik untuk libclntsh.so.11.1. Karena ini adalah OS X, ini sebenarnya disebut libclntsh.dylib.11.1. Jadi kita perlu cd ke direktori tempat kita membuka ritsleting klien dan kemudian menjalankan

ln -s libclntsh.dylib.11.1 libclntsh.dylib

Pada OS X, kami kemudian mengatur DYLD_LIBRARY_PATH , bukan LD_LIBRARY_PATH :

export DYLD_LIBRARY_PATH=/scratch/instantclient_11_2:$DYLD_LIBRARY_PATH

menggunakan jalur apa pun yang benar untuk mesin Anda.

Saya tidak pernah bisa mendapatkan ROracle untuk dikompilasi dengan OCI_LIB variabel lingkungan. Sebagai gantinya, saya menggunakan --with-oci-lib opsi flag compiler:

R CMD INSTALL --configure-args='--with-oci-lib=/scratch/instantclient_11_2' ROracle_1.1-11.tar.gz

lagi menggunakan jalur apa pun dan nomor versi ROracle yang sesuai.

Jika Anda terhubung ke database Oracle menggunakan file tnsnames.ora, Anda juga perlu menyetel variabel lingkungan TNS_ADMIN untuk menunjuk ke lokasi file tersebut.

Satu gotcha terakhir:Anda mungkin menemukan (seperti yang saya lakukan) bahwa ini semua hanya akan berfungsi jika Anda meluncurkan Rdari baris perintah (yaitu Terminal). Khususnya, jika Anda meluncurkan RGui.app atauRStudio.app dari GUI, lalu mencoba menjalankan library(ROracle) Anda akan mendapatkan pesan kesalahan saat mengatakan sesuatu sebagai akibat dari

> library("ROracle")
Error in dyn.load(file, DLLpath = DLLpath, ...) : 
  unable to load shared object '/Library/Frameworks/R.framework/Versions/3.1/Resources/library/ROracle/libs/ROracle.so':
  dlopen(/Library/Frameworks/R.framework/Versions/3.1/Resources/library/ROracle/libs/ROracle.so, 6): Library not loaded: /ade/b/3071542110/oracle/rdbms/lib/libclntsh.dylib.11.1
  Referenced from: /Library/Frameworks/R.framework/Versions/3.1/Resources/library/ROracle/libs/ROracle.so
  Reason: image not found
Error: package or namespace load failed for ‘ROracle’

Ini akan terjadi meskipun Sys.getenv("DYLD_LIBRARY_PATH") dengan setia melaporkan jalur yang benar.

Untuk sementara, saya meretas "solusi" di mana saya membuat skrip shell yang meluncurkanRStudio/RGui saat startup, dan hanya harus ingat untuk selalu meluncurkannya melalui

open -a R.app
open -a RStudio.app

Masalahnya tampaknya berkaitan dengan bagaimana variabel lingkungan tersedia untuk aplikasi yang diluncurkan GUI di OS X. Seperti biasanya, saya akhirnya menemukan solusi di StackOverflow. Mengedit/etc/launchd.conf file memecahkan masalah ini, jadi ROracle sekarang memuat bahkan ketika RStudio/RGuiare diluncurkan dari Finder. Meskipun perhatikan di sini bahwa /etc/launchd.conf solusi tidak lagi didukung di Yosemite. Jawaban itu menyarankan Anda sekarang perlu menyiapkan file plist start-up hanya untuk mengatur lingkungan untuk launchctl saat memulai.

Pembaruan El Capitan untuk ROracle

Saya sekarang telah melalui wadah yang satu ini di El Capitan dan berfungsi seperti yang dijelaskan di atas, tetapi hanya jika Anda menonaktifkan Perlindungan Integritas Sistem pertama! Melakukannya cukup cepat, dan petunjuknya mudah ditemukan melalui Google.

Fiuh.



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Driver ODP.NET terkelola tidak muncul di dialog Sumber Data

  2. Kembali dari Open World 2013

  3. Bagaimana cara memvalidasi alamat email menggunakan PL/SQL?

  4. OracleParameter dan Klausa IN

  5. Memisahkan nilai yang dipisahkan koma di Oracle