2012-09-20 10 views
5

मैं एक इन-हाउस पैकेज "माईपीकेजी" का उपयोग करके पुनरुत्पादन विश्लेषण के लिए प्रोटोकॉल लिख रहा हूं। प्रत्येक उपयोगकर्ता अपनी इनपुट फाइलें प्रदान करेगा; इनपुट के अलावा, विश्लेषण एक ही परिस्थितियों में चलाया जाना चाहिए। (उदाहरण के लिए हम अनुमान लगा सकते हैं कि अलग-अलग परिणाम विभिन्न इनपुट फ़ाइलों के कारण हैं)।मैं एक ही सर्वर पर विभिन्न उपयोगकर्ताओं के बीच एक सतत आर पर्यावरण सुनिश्चित कैसे कर सकता हूं?

MyPKG विकास में है, इसलिए library(MyPKG) जो भी अंतिम संस्करण था, जिसे उपयोगकर्ता ने स्थानीय पुस्तकालय में संकलित किया था, लोड करेगा। यह उनके स्थानीय पुस्तकालयों में पाए गए किसी भी निर्भरता को भी लोड करेगा।

लेकिन मैं चाहता हूं कि इस विश्लेषण के लिए सभी लोग एक विशिष्ट संस्करण (MyPKG_3.14) का उपयोग करें, जबकि अभी भी हाल के संस्करणों के विकास की अनुमति दें। अगर मैं सही ढंग से समझता हूं, तो "आर --vanilla" सभी के लिए समान निर्भरता लोड करेगा।

एक बार जब हम कर लेंगे, तो हम एक स्थिर पुनरुत्पादित वातावरण को बनाए रखने के लिए कार्य वातावरण को वीएम के रूप में सहेज लेंगे। तो एक अस्थायी (6 महीने) समाधान पर्याप्त होगा।

मैं दो संभावित समाधानों के साथ आया हूं, लेकिन मुझे यकीन नहीं है कि या तो पर्याप्त है या नहीं। एक में

R --vanilla 
library(MyPKG) 
.... 

या

  • संकलन MyPKG_3.14:

    1. डिफ़ॉल्ट आर पथ में MyPKG_3.14 इंस्टॉल करें और फिर प्रोटोकॉल में निम्न कोड प्रदान करने के लिए सर्वर व्यवस्थापक से विशिष्ट पुस्तकालय, उदाहरण के लिए lib.loc = "/home/share/lib/R/MyPKG_3.14", और फिर

      R --vanilla 
      library(MyPKG) 
      

    • प्रदान इन तरीकों सुनिश्चित करने के लिए कि हर कोई चल रहा है पर्याप्त के दोनों कर रहे हैं एक ही संस्करण?
    • क्या कोई दूसरे के लिए बेहतर है?
    • क्या अन्य असुरक्षित मुद्दे उत्पन्न हो सकते हैं?
    • क्या कई विश्लेषण मानकीकृत करने के लिए कोई पसंदीदा विकल्प है?
    • क्या मुझे SessionInfo() के आउटपुट का परीक्षण शामिल करना चाहिए?
    • क्या हर किसी के लिए सर्वर पर एक खाता बनाना बेहतर होगा?
  • +0

    शानदार सवाल। मैं इस मुद्दे पर एक बड़ी परियोजना के हिस्से के रूप में काम कर रहा हूं और एक पुस्तकालय जारी करने की योजना बना रहा हूं जो किसी भी निष्पादन के बाद उद्भव निशान उत्पन्न करेगा। दो निशानों की तुलना करना आसान होगा और देखें कि अंतर केवल नया डेटा या नई पुस्तकालय है और यदि अलग-अलग परिणाम दिखाई देते हैं तो कोई भी आवश्यकतानुसार बदल सकता है। अधिक जानकारी के लिए मुझे ईमेल करें। – Maiasaura

    +0

    @ मायासोरा मैं आपका ईमेल नहीं देखता हूं। क्या यह क्रैम से शुरू होता है? –

    +0

    हां। berkeley dot edu – Maiasaura

    उत्तर

    1

    अंकों की युगल: संकुल की सिस्टम-वाइड प्रतिष्ठानों

    • का प्रयोग करें, जैसे आर (सीआरएएन बंदरगाहों सहित) के लिए डेबियन/उबंटू बाइनरी /usr/local/lib/R/site-library का उपयोग करने का प्रयास करेगा (यदि उपयोगकर्ता निर्देशिका के मालिक समूह में जोड़े गए हैं तो भी उपयोगकर्ता इंस्टॉल कर सकते हैं)। इस तरह सभी को एक ही संस्करण
    • सिस्टम-व्यापी कॉन्फ़िगरेशन का उपयोग करें, उदा। ~/ से नीचे डॉटफाइल पर अधिक पसंद करें। इसी कारण से, डेबियन/उबंटू पैकेज /etc/R/
    • में संकुल और संस्करणों की रिपोर्ट करने के लिए अपने पैकेजों (जैसे installed.packages()) से पूछने के लिए आर के facilties का उपयोग करें।
    • ओएस रिलीज और संस्करण पूछने के लिए ओएस-स्तरीय सुविधाओं का उपयोग, जहां उपलब्ध हो, का उपयोग करें। हालांकि, यह कम मानकीकृत है।

    घर पर अंतिम बिंदु मेरी बॉक्स के बारे में कहते हैं

    > [email protected]:~$ lsb_release -a | tail -4 
    > Distributor ID: Ubuntu 
    > Description: Ubuntu 12.04.1 LTS 
    > Release:  12.04 
    > Codename:  precise 
    > [email protected]:~$ 
    

    जो एक शुरुआत है।

    +0

    + 1 बहुत उपयोगी सलाह आपने हाल ही में मुझे "~/R/x86_64-pc-linux-gnu-library/2.15" को हटाने के लिए दिया है – GSee