with how from data conexion con r oracle rodbc

how - Instalación de paquetes RODBC/ROracle en OS X Mavericks



r con oracle (4)

Esta respuesta cubrirá la instalación de RODBC y ROracle en OS X, específicamente en Mavericks y posteriores.

Ambos paquetes ahora deben ser compilados (compilados) desde la fuente. Esto significa que lo primero que necesita es descargar XCode y las "herramientas de línea de comando" asociadas para que realmente tenga un compilador. La forma en que haces esto ha cambiado con prácticamente todas las versiones de OS X / XCode, pero si comienzas a buscar en Google, probablemente terminarás aterrizando here .

Una vez que tengas eso en su lugar ...

RODBC

Desde OS X 10.9 (Mavericks) Apple dejó de incluir los archivos de cabecera iODBC SQL junto con las "herramientas de línea de comando" que los usuarios de R en OS X están acostumbrados a instalar para crear paquetes de R desde la fuente.

Entonces, si intentas construir RODBC a partir de la fuente en Mavericks en este punto, deberías obtener un error como:

configure: error: "No se encontraron los encabezados ODBC sql.h y sqlext.h"

Para solucionar este problema, debe descargar la última versión de iODBC (www.iodbc.org), y luego descomprimir el archivo y configurar las rutas de búsqueda de encabezado y biblioteca en la ubicación donde coloca el paquete descomprimido. Si no sabe cómo configurar sus rutas de búsqueda, puede colocar los archivos de encabezado (sql.h y sqlext.h) en el directorio /usr/include , y el archivo libiodbc.a en el directorio /usr/lib .

Entonces deberías poder hacer

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

sin ningún problema. Presumiblemente, esto también funcionaría con el otro proyecto ODBC de código abierto, unixODBC, pero no lo he intentado.

He probado esto (y el método homebrew en otra respuesta) en El Capitán y ambos siguen funcionando.

ROracle

Esto es más complicado. Sin embargo, ROracle se puede instalar en OS X (lo he probado en Mountain Lion a través de El Capitán). Como ROracle se basa en el Cliente Instantáneo de Oracle, no hay binarios disponibles para ninguna plataforma. Hay instrucciones de instalación detalladas para el paquete here .

Para OS X, necesitamos (en su mayoría) seguir las instrucciones de Linux.

Primero, descargue el Oracle Instant Client apropiado, así como el SDK, como se indica en las instrucciones de Linuz.

Las instrucciones de instalación de Linux mencionan la instalación del cliente desde un RPM, que colocará todo "en el lugar correcto". No pude averiguar si eso se aplicó para OS X, así que simplemente descomprimí el cliente en un directorio que creé y coloqué el SDK dentro de ese directorio en /sdk .

Las instrucciones de instalación de Linux nos dirigen a crear un enlace simbólico para libclntsh.so.11.1. Dado que se trata de OS X, en realidad se llama libclntsh.dylib.11.1. Así que necesitamos hacer un cd al directorio donde descomprimimos el cliente y luego ejecutamos

ln -s libclntsh.dylib.11.1 libclntsh.dylib

En OS X, luego configuramos DYLD_LIBRARY_PATH , no LD_LIBRARY_PATH :

export DYLD_LIBRARY_PATH=/scratch/instantclient_11_2:$DYLD_LIBRARY_PATH

Usando el camino que sea correcto para su máquina.

Nunca pude hacer que ROracle compile con una variable de entorno OCI_LIB . En su lugar, utilicé la --with-oci-lib compilador --with-oci-lib :

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

nuevamente usando la ruta y el número de versión de ROracle es apropiado.

Si se está conectando a una base de datos Oracle utilizando un archivo tnsnames.ora, también deberá configurar una variable de entorno TNS_ADMIN para que apunte a la ubicación de ese archivo.

Una última pregunta: puedes encontrar (como lo hice) que todo esto funcionará solo si ejecutas R desde la línea de comandos (es decir, Terminal). Específicamente, si ejecuta RGui.app o RStudio.app desde la GUI, y luego intenta ejecutar la library(ROracle) , obtendrá un error diciendo algo al efecto de

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

Esto sucederá aunque Sys.getenv("DYLD_LIBRARY_PATH") informe correctamente la ruta correcta.

Durante un tiempo, hackeé una "solución" donde creé un script de shell que ejecutó RStudio / RGui en el inicio, y solo tuve que recordar que siempre los lanzaría posteriormente a través de

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

El problema aparentemente tiene que ver con cómo las variables de entorno están disponibles para las aplicaciones lanzadas por GUI en OS X. Como suele ser el caso, finalmente encontré la solución en StackOverflow . La edición del archivo /etc/launchd.conf solucionó este problema, por lo que ROracle ahora se carga incluso cuando se inician RStudio / RGui desde el Finder. Aunque tenga here cuenta que la solución /etc/launchd.conf ya no es compatible con Yosemite. Esa respuesta sugiere que ahora necesita configurar un archivo plist de inicio solo para configurar el entorno para el inicio de launchctl .

Actualización de El Capitán para ROracle

Ahora he pasado por el crisol de este en El Capitán y funciona como se describe anteriormente, ¡pero solo si primero desactiva la Protección de integridad del sistema ! Hacer eso es bastante rápido, y las instrucciones se encuentran fácilmente a través de Google.

Uf.

He estado intentando instalar algunos paquetes como RODBC, ROracle o RGtk2, que se usan para traqueteo. Realmente agradecería que alguien me ayudara a solucionar este problema para poder usar estas aplicaciones en una Mac con Mavericks y con 3.1.1 R

Obtengo este tipo de error tanto para RODBC como para RGtk2:

el paquete ''RGtk2'' está disponible como un paquete fuente pero no como un Aviso binario en paquetes de instalación: el paquete ''RGtk2'' no está disponible (para R versión 3.1.1)

Cuando trato de usar type = ''source'', puedo descargar o comenzar a descargar pero luego aparece este tipo de mensaje de error ...

Advertencia en install.packages: la instalación del paquete ''RODBC'' tuvo un estado de salida distinto de cero


Si estás usando MacPorts, haz esto:

sudo port install unixODBC

Luego, cree (o, si existe, edite) un archivo en su directorio de inicio

~/.R/Makevars

que debe contener una línea

CFLAGS += -I/opt/local/include

A continuación, puede instalar RODBC por

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

Básicamente, lo anterior

  • Instala las bibliotecas y archivos de cabecera necesarios.
  • Le dice a R donde encontrarlos
  • Instala RODBC.

Si tienes Homebrew, sería fácil. En la terminal, use

brew install unixodbc

En la consola r, utilice

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

Espero que ayude


Tendrás que construir el paquete desde la fuente a mano. Si va al sitio de RODBC , notará que los binarios no están disponibles para los Mavericks. Descargue el paquete y siga las instrucciones para crear un paquete desde la fuente. Estas son instrucciones de Windows pero la idea general es la misma. Necesitará todos los paquetes de SO necesarios que se estén utilizando durante el proceso de compilación de un paquete en particular.