इस उत्तर में OS X पर विशेष रूप से Mavericks और बाद में RODBC और ROracle स्थापित करना शामिल होगा।
दोनों पैकेजों को अब स्रोत से निर्मित (संकलित) करने की आवश्यकता है। इसका मतलब यह है कि आपको सबसे पहले XCode और संबंधित "कमांड लाइन टूल्स" को डाउनलोड करना होगा ताकि आपके पास वास्तव में है एक संकलक। आप इसे कैसे करते हैं, यह मूल रूप से OS X/XCode के हर संस्करण के साथ बदल गया है, लेकिन यदि आप Googling शुरू करते हैं तो आप शायद यहां उतरेंगे।
एक बार आपके पास वह जगह हो जाए...
आरओडीबीसी
चूंकि OS X 10.9 (Mavericks) Apple ने "कमांड लाइन टूल्स" के साथ iODBC SQL हेडर फाइलों को शामिल करना बंद कर दिया था, जो कि OS X पर R उपयोगकर्ता स्रोत से Rpackages बनाने के लिए स्थापित करने के आदी हैं।
इसलिए यदि आप इस बिंदु पर Mavericks पर स्रोत से RODBC बनाने का प्रयास करते हैं, तो आपको एक त्रुटि मिलनी चाहिए:
<ब्लॉककोट>कॉन्फ़िगर करें:त्रुटि:"ODBC हेडर sql.h और sqlext.h नहीं मिला"
इसे ठीक करने के लिए, आपको iODBC (www.iodbc.org) का नवीनतम संस्करण डाउनलोड करना होगा, और फिर फ़ाइल को अनज़िप करना होगा और अपने हेडर और लाइब्रेरी खोज पथ को उस स्थान पर सेट करना होगा जहाँ आपने अनज़िप किया हुआ पैकेज रखा था। यदि आप अपने खोज पथों को सेट करना नहीं जानते हैं, तो आप केवल /usr/include
में शीर्ष लेख फ़ाइलें (sql.h और sqlext.h) डाल सकते हैं। निर्देशिका, और libiodbc.a
/usr/lib
में फाइल करें निर्देशिका।
तब आपको ऐसा करने में सक्षम होना चाहिए
install.packages("RODBC",type = "source")
बिना किसी समस्या के। संभवतः यह अन्य प्रमुख ओपन सोर्स ओडीबीसी प्रोजेक्ट, यूनिक्सोडबीसी के साथ भी काम करेगा, लेकिन मैंने इसकी कोशिश नहीं की है।
मैंने एल कैपिटन पर इसका (और एक अन्य उत्तर में होमब्रे विधि) का परीक्षण किया है और दोनों अभी भी काम करते हैं।
रोरैकल
यह अधिक जटिल है। हालाँकि, OS X पर ROracle स्थापित किया जा सकता है (मैंने El Capitan के माध्यम से माउंटेन लायन पर इसका परीक्षण किया है)। चूंकि ROracle Oracle इंस्टेंट क्लाइंट पर निर्भर करता है, इसलिए किसी भी प्लेटफॉर्म के लिए कोई बायनेरिज़ उपलब्ध नहीं है। यहां पैकेज के लिए विस्तृत इंस्टॉलेशन निर्देश दिए गए हैं।
OS X के लिए, हमें (ज्यादातर) Linux निर्देशों का पालन करना होगा।
सबसे पहले, उपयुक्त Oracle इंस्टेंट क्लाइंट डाउनलोड करें, साथ ही साथ SDK, जैसा कि Linuz निर्देशों में निर्देशित है।
लिनक्स इंस्टॉलेशन निर्देश क्लाइंट को आरपीएम से स्थापित करने का उल्लेख करते हैं, जो सब कुछ "सही जगह पर" रखेगा। मैं यह पता लगाने में सक्षम नहीं था कि क्या यह ओएस एक्स के लिए भी लागू होता है, इसलिए मैंने क्लाइंट को मेरे द्वारा बनाई गई निर्देशिका में अनजिप कर दिया और एसडीके को उस निर्देशिका के अंदर /sdk
में रखा। ।
लिनक्स निर्देश स्थापित करता है और फिर हमें libclntsh.so.11.1 के लिए एक प्रतीकात्मक लिंक बनाने के लिए निर्देशित करता है। चूँकि यह OS X है, इसे वास्तव में libclntsh.dylib.11.1.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 संस्करण संख्या उपयुक्त है उसका उपयोग करना।
यदि आप tnsnames.ora फ़ाइल का उपयोग करके Oracle डेटाबेस से कनेक्ट कर रहे हैं, तो आपको उस फ़ाइल के स्थान को इंगित करने के लिए एक TNS_ADMIN पर्यावरण चर भी सेट करना होगा।
एक आखिरी गोचा:आप पा सकते हैं (जैसा मैंने किया) कि यह सब तभी काम करेगा जब आप कमांड लाइन (यानी टर्मिनल) से आर लॉन्च करेंगे। विशेष रूप से, यदि आप GUI से 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
समस्या स्पष्ट रूप से यह है कि ओएस एक्स में जीयूआई लॉन्च किए गए अनुप्रयोगों के लिए पर्यावरण चर कैसे उपलब्ध कराए जाते हैं। जैसा कि आमतौर पर होता है, मुझे अंततः स्टैक ओवरफ्लो पर समाधान मिला। /etc/launchd.conf
का संपादन फ़ाइल ने इस समस्या को हल कर दिया है, इसलिए ROracle अब तब भी लोड होता है जब RStudio/RGuiare को Finder से लॉन्च किया जाता है। हालांकि यहां ध्यान दें कि /etc/launchd.conf
समाधान अब योसेमाइट में समर्थित नहीं है। यह उत्तर बताता है कि अब आपको केवल launchctl
के लिए वातावरण सेट करने के लिए एक स्टार्ट-अप प्लिस्ट फ़ाइल सेट करने की आवश्यकता है स्टार्टअप पर।
ROracle के लिए El Capitan अपडेट
मैं अब El Capitan में इस पर क्रूसिबल के माध्यम से चला गया हूं और यह ऊपर वर्णित के रूप में काम करता है, लेकिन केवल तभी जब आप सिस्टम अखंडता सुरक्षा को अक्षम करें प्रथम! ऐसा करना काफी तेज है, और निर्देश Google के माध्यम से आसानी से मिल जाते हैं।
ओफ़्फ़।