2015-07-18 7 views
6

manual में यह लिखा है:निक्स-तत्काल क्या है? स्टोर-व्युत्पन्न क्या है?

आदेश nix-इन्स्तांत (उच्च स्तरीय) निक्स भाव से दुकान derivations उत्पन्न करता है।

लेकिन स्टोर व्युत्पन्न क्या हैं?

मैनुअल का कहना है कि निम्नलिखित के बारे में store derivations:

एक निर्माण कार्रवाई का विवरण। व्युत्पन्न का परिणाम एक स्टोर ऑब्जेक्ट है। व्युत्पन्न आमतौर पर व्युत्पन्न आदिम का उपयोग करते हुए निक्स अभिव्यक्तियों में निर्दिष्ट होते हैं। ये निम्न स्तर की दुकान derivations

यह एक nix-newbee और मैं के लिए समझने के लिए एक छोटा सा मुश्किल है (परोक्ष nix-env और nix-निर्माण, या स्पष्ट रूप से nix-इन्स्तांत के द्वारा) में अनुवाद किया गया गूगलिंग द्वारा निक्स-तत्काल और स्टोर व्युत्पन्न के बारे में और अधिक प्रबुद्ध नहीं मिला। मैंने # यूनिक्स पर भी पूछा, मुझे अभी तक कोई जवाब नहीं मिला है।

क्या कोई एक साधारण उदाहरण पर बता सकता है कि स्टोर व्युत्पन्न क्या है, इसका उपयोग किस लिए किया जाता है?

क्यों निक्स-इंस्टीट्यूट का उपयोग करके स्टोर व्युत्पन्न उत्पन्न करेगा? क्या आप एक सुपर सरल, उदाहरण समझने में आसान दे सकते हैं?

उत्तर

19

निक्स-तत्काल क्या है?

आदेश nix-instantiate आदेश का उद्देश्य निक्स अभिव्यक्तियों का मूल्यांकन करना है। निक्स भाषाओं का प्राथमिक उद्देश्य व्युत्पन्न उत्पन्न करना है।

स्टोर-व्युत्पन्न क्या है?

एक व्युत्पन्न (see example) बिल्डिंग (एहसास) पैकेज के लिए उपयोग की जाने वाली बिल्ड व्यंजनों का कंप्यूटर-अनुकूल प्रतिनिधित्व है। वे एक्सटेंशन .drv के साथ फ़ाइलें हैं जो स्टोर निर्देशिका में सूचीबद्ध हैं, आमतौर पर /nix/store

ये बिल्ड व्यंजनों को निक्स डेमन द्वारा समझा जाता है, और यह सुनिश्चित करने के लिए उपयोग किया जाता है कि सभी निर्भरताएं पहले से बनाई गई हैं और पूर्व-गणना पथों में संग्रहीत हैं। एक बार सभी निर्भरताओं को सफलतापूर्वक संकलित कर दिया जाता है, तो निक्स डेमन विकल्प की तलाश कर सकते हैं, या स्थानीय रूप से व्युत्पन्न का एहसास कर सकते हैं। सभी विस्तृत स्पष्टीकरण Eelco Dolstra PhD Thesis में उपलब्ध है।

ये फ़ाइलें हर बार बनाई जाती हैं जब nix-instantiate कमांड derivation निक्स भाषा के फ़ंक्शन का मूल्यांकन करता है, जब तक --eval कमांड लाइन विकल्प प्रदान नहीं किया जाता है।

क्यों निक्स-इंस्टीटिएट का उपयोग करके स्टोर व्युत्पन्न उत्पन्न करेगा?

आप निर्माण उत्पादन में रुचि रखते हैं, तो आप nix-build है, जो के बराबर है पसंद करते हैं चाहिए:

$ nix-store -r $(nix-instantiate '<nixpkgs>' -A hello)

कुछ मामलों आप का निर्माण परिणाम में कोई दिलचस्पी नहीं कर रहे हैं में, लेकिन कम से देख में संकलन समय निर्भरता। उदाहरण के लिए, यदि आप चाहते हैं कि आप हैलो की बिल्ड टाइम निर्भरताओं की जांच करें। विस्तृत जवाब NBP के लिए

$ nix-store --tree -q $(nix-instantiate '<nixpkgs>' -A hello)

+0

बहुत धन्यवाद: फिर nix-स्टोर आदेश का उपयोग का पालन के रूप में, आप का निर्माण नुस्खा के सभी निर्भरता अनुरोध कर सकते हैं! – jhegedus

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