Oracle
 sql >> база данни >  >> RDS >> Oracle

Инсталиране на пакети RODBC/ROracle на OS X Mavericks

Този отговор ще обхваща инсталирането на RODBC и ROracle на OS X, по-специално на Mavericks и по-късно.

Сега и двата пакета трябва да бъдат изградени (компилирани) от източник. Това означава, че първото нещо, от което се нуждаете, е да изтеглите XCode и свързаните с него „инструменти за команден ред“, така че действително да имате компилатор. Начинът, по който правите това, се промени основно с всяка версия на OS X/XCode, но ако започнете да търсите в Google, вероятно ще стигнете до тук.

След като го поставите на място...

RODBC

След OS X 10.9 (Mavericks) Apple спря да включва заглавните файлове на iODBC SQL заедно с „инструментите на командния ред“, които потребителите на R на OS X са свикнали да инсталират, за да изградят Rpackages от източник.

Така че, ако се опитате да изградите RODBC от източник на Mavericks в този момент, трябва да получите грешка като:

configure:грешка:"ODBC заглавките sql.h и sqlext.h не са намерени"

За да коригирате това, трябва да изтеглите най-новата версия на iODBC (www.iodbc.org) и след това да разархивирате файла и да зададете пътя за търсене в заглавката и библиотеката до мястото, където сте поставили разархивирания пакет. Ако не знаете как да зададете пътищата си за търсене, можете просто да поставите заглавните файлове (sql.h и sqlext.h) в /usr/include директория и libiodbc.a файл в /usr/lib директория.

Тогава би трябвало да можете да правите

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

без никакви проблеми. Предполага се, че това ще работи и с другия голям ODBC проект с отворен код, unixODBC, също, но не съм пробвал това.

Тествах това (и метода за домашно приготвяне в друг отговор) в El Capitan и и двете все още работят.

ROracle

Това е по-сложно. Въпреки това, ROracle може да бъде инсталиран на OS X (тествах това на Mountain Lion през El Capitan). Тъй като ROracle разчита на Oracle Instant Client, няма налични двоични файлове за никоя платформа. Тук има подробни инструкции за инсталиране на пакета.

За OS X трябва (най-вече) да следваме инструкциите на Linux.

Първо изтеглете подходящия Oracle Instant Client, както и SDK, както е указано в инструкциите на Linuz.

Инструкциите за инсталиране на Linux споменават инсталирането на клиента от RPM, което ще постави всичко "на правилното място". Не можах да разбера дали това се отнася дори за OS X, така че просто разархивах клиента в директория, която създадох и поставих SDK в тази директория в /sdk .

След това инструкциите за инсталиране на Linux ни насочват да създадем символна връзка за libclntsh.so.11.1. Тъй като това е OS X, всъщност се нарича libclntsh.dylib.11.1. Така че трябва да отидем в директорията, в която разархивирахме клиента и след това да стартираме

ln -s libclntsh.dylib.11.1 libclntsh.dylib

На OS X след това задаваме DYLD_LIBRARY_PATH , а не LD_LIBRARY_PATH :

export DYLD_LIBRARY_PATH=/scratch/instantclient_11_2:$DYLD_LIBRARY_PATH

като използвате правилния път за вашата машина.

Никога не успях да накарам ROracle да компилира с OCI_LIB променлива на средата. Вместо това използвах --with-oci-lib опция за флаг на компилатора:

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

отново използвайки какъвто и да е подходящ път и номер на версията на ROracle.

Ако се свързвате с база данни на Oracle с помощта на файл tnsnames.ora, ще трябва също да зададете променлива на средата TNS_ADMIN, която да сочи към местоположението на този файл.

Последна грешка:може да откриете (както направих аз), че всичко това ще работи само ако стартирате R от командния ред (т.е. Терминал). По-конкретно, ако стартирате RGui.app или RStudio.app от графичния интерфейс и след това опитате да стартирате library(ROracle) ще получите грешка, казвайки нещо в резултат на

> 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’

Това ще се случи, въпреки че Sys.getenv("DYLD_LIBRARY_PATH") вярно съобщава правилния път.

За известно време хакнах едно „решение“, където създадох шел скрипт, който стартира RStudio/RGui при стартиране и просто трябваше да помня винаги впоследствие да ги стартирам чрез

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

Проблемът очевидно е свързан с начина, по който променливите на средата са достъпни за приложения, стартирани с GUI в OS X. Както обикновено се случва, в крайна сметка намерих решението на StackOverflow. Редактиране на /etc/launchd.conf файл реши този проблем, така че ROracle вече се зарежда дори когато RStudio/RGuiare стартира от Finder. Въпреки че имайте предвид, че /etc/launchd.conf решението вече не се поддържа в Yosemite. Този отговор предполага, че сега трябва да настроите стартиращ plist файл, само за да настроите средата за launchctl при стартиране.

Актуализация на El Capitan за ROracle

Сега минах през тигела на този в El Capitan и работи, както е описано по-горе, но само ако деактивирате защитата на целостта на системата първо! Това става сравнително бързо и инструкциите се намират лесно чрез Google.

Уф.



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. NLS_LOWER() Функция в Oracle

  2. Скриптове за стартиране и спиране на EBS R12

  3. Необходима ли е ключовата дума 'as' в Oracle за дефиниране на псевдоним?

  4. Oracle DB Server + APEX + ORDS + JasperReports от нулата (Част 4)

  5. Как да форматирате числа в Oracle