2013-05-07 13 views
17

के लिए सीधे एक यूआरएल से एक आर पैकेज स्थापित करें मैं पैकेज स्रोत के लिए सीधे एक यूआरएल से एक पैकेज स्थापित करना चाहता हूं। मैं लोगों को पैकेज के पूर्व-रिलीज़ संस्करण का परीक्षण करना आसान बनाना चाहता हूं जो व्यापक रूप से (या स्थायी रूप से) उपलब्ध नहीं होना चाहिए। This एक समान प्रश्न है लेकिन यह अलग है क्योंकि यह केवल स्थानीय फ़ाइलों से स्थापित करने के लिए सामान्य URL नहीं स्थापित करता है।पैकेज स्रोत

इस प्रश्न के लिए मैं boot पैकेज स्रोत के लिंक का उपयोग करूंगा। पढ़ना ?install.packages विशेष रूप से pkgs तर्क का वर्णन पता चलता है: सुझाव है कि यूआरएल पैकेज का नाम, न अपने स्थान के रूप में व्याख्या की जा रही है

Warning in install.packages : 
    installation of package 
    ‘http://cran.r-project.org/src/contrib/Archive/boot/boot_1.3-7.tar.gz’ 
    had non-zero exit status 

:

install.packages(
    "http://cran.r-project.org/src/contrib/Archive/boot/boot_1.3-7.tar.gz", 
    repos = NULL, type = "source" 
) 

हालांकि इस के साथ विफल रहता है। हम निम्नलिखित दो चरणों वाली प्रक्रिया के साथ इस को हल करने के कर सकते हैं:

download.file(
    "http://cran.r-project.org/src/contrib/Archive/boot/boot_1.3-7.tar.gz", 
    "boot" 
) 
install.packages("boot", repos = NULL, type = "source") 

लेकिन मैं केवल install.packages लिए एक कॉल के साथ ऐसा करना पसंद करेंगे; और install.packages फ़ाइलों को डाउनलोड करने में सक्षम है, मुझे लगता है कि यह संभव होना चाहिए।

+0

पैकेज आपके मूल कॉल में नहीं मिला है क्योंकि यह वहां नहीं है। यह उस निर्देशिका में 'boot_1.3-9.tar.gz' है। –

+0

@ साइमन ओ 101 क्षमा करें कि यह एक गलती थी जिसे मैंने प्रश्न लिखने में बनाया था। इसे ठीक करने से व्यवहार दुर्भाग्य से नहीं बदलता है। – orizon

+1

निर्देशिका को सेट क्यों न करें जिसमें आप स्रोत पैकेज को भंडार के रूप में संग्रहीत करते हैं? [यहां एक उदाहरण दिया गया है] (http://stackoverflow.com/questions/2905650/creating-a-local-r-package-repository), हालांकि आप 'टाइप =" स्रोत "' प्रकार के विकल्प को प्रतिस्थापित करना चाहते हैं = "win.binary" ' –

उत्तर

16

install.packages अब 3.1.1 के रूप में http URL (https अभी तक नहीं) के साथ काम करता है। यह मेरे लिए काम करता है:

install.packages("http://www.lepem.ufc.br/jaa/colorout_1.1-0.tar.gz", repos=NULL) 

संपादित करें: आर 3.2.0 के रूप में, https libcurl के माध्यम से builtin है। कुछ मुद्दों पर वहाँ जा सकता है: अब यह काम करना चाहिए:

install.packages("https://github.com/hadley/devtools/archive/v1.7.0.tar.gz", 
       repos=NULL, method="libcurl") 

संपादित करें:

संपादित 2016/04/20 आर 3.2.2 के रूप में, https साथ libcurl समर्थन संभालने डिफ़ॉल्ट विकल्प में संकलित किया गया काम करना चाहिए। एस 3 पर होस्ट किए गए पैकेज डाउनलोड करना, लेकिन method='wget' अब उन लोगों के लिए काम करता है।

+0

यह विधि 'इंस्टॉल होने पर' 403 निषिद्ध 'त्रुटि के साथ विफल रही।पैकेज() ''download.file()' का उपयोग कर फ़ाइल डाउनलोड करने का प्रयास किया। निश्चित नहीं है कि libcurl समर्थन को संकलित किया गया था लेकिन @ devtools :: install_url() '@G द्वारा सुझाया गया था। Grothendieck कोई समस्या के साथ काम करता है। –

+0

यह प्रमाणीकरण समस्या की तरह लगता है। आप किस यूआरएल को डाउनलोड करने की कोशिश कर रहे हैं? –

+0

हां, ऐसा लगता है लेकिन एक अलग यूआरएल के लिए (शायद जहां फ़ाइल वास्तव में होस्ट की जाती है)। 'Install.packages की तुलना करें (" https://bitbucket.org/kleinstein/logminer/downloads/pclogit_0.2.tar.gz ")' devtools :: install.packages ("https://bitbucket.org/kleinstein /logminer/downloads/pclogit_0.2.tar.gz ")' –

2

निर्देशिका को सेट क्यों न करें जिसमें आप स्रोत पैकेज को भंडार के रूप में संग्रहीत करते हैं?

Here is an example (हालांकि आप उस लिंक पर कोड में type="win.binary" के लिए type="source" को प्रतिस्थापित करना चाहते हैं)।

+0

यह मेरी समस्या हल करता है। मैंने आशा की थी कि 'install.packages'' एक भंडार के बाहर संकुल को डाउनलोड और इंस्टॉल करने में सक्षम होगा लेकिन दस्तावेज़ीकरण को बारीकी से पढ़ना मुझे लगता है कि यह संभव नहीं है इसलिए मैंने आपका जवाब स्वीकार कर लिया है। – orizon

9

devtools पैकेज में ?install_url देखें।

+0

धन्यवाद। यह मेरी समस्या को सीधे हल करता है। – orizon

संबंधित मुद्दे