एप्टीट्यूड वास्तव में कैसे काम करता है?


34

ठीक है, मैं समझता हूं कि मैं apt-get {install|upgrade|remove} mypackagesबायनेरिज़ के साथ-साथ उनके कॉन्फ़िगरेशन डेटा फ़ाइलों और निर्भरताओं को स्थापित करने, अपग्रेड करने या निकालने के लिए कैसे उपयोग कर सकता हूं (वास्तव में, removeकेवल बायनेरिज़ को हटा देगा जब तक कि अतिरिक्त झंडे प्रदान नहीं किए जाते)।

मैं इसकी तलाश नहीं कर रहा हूं कि इसका manवर्णन कैसे किया जाता है , लेकिन उच्च स्तर यह क्या कर रहा है। मेरा अंतिम लक्ष्य मेरे लिए कई दूरस्थ मशीनों पर कुछ कस्टम सॉफ़्टवेयर (एक मेक फ़ाइल द्वारा बनाई गई) स्थापित करने और प्रबंधित करने के लिए एक साधन बनाना है, और मुझे प्रक्रिया के बारे में अधिक जानने की आवश्यकता है। यदि इस प्रश्न के उत्तर दिए गए हैं कि वितरण किस पर आधारित है, तो कृपया डेबियन को दर्जी करें।

आम तौर पर यह कैसे काम करता है इसके अलावा, मेरे पास निम्नलिखित विशिष्ट प्रश्न हैं:

  1. जो ग्राहक उपयुक्त रिपॉजिटरी तक पहुंच रहा है, वह फाइलों का ट्रैक कैसे रखता है?
  2. रिपॉजिटरी को एक ही ऑपरेटिंग सिस्टम पर होस्ट किया जाना चाहिए (यानी उपयुक्त रिपॉजिटरी को रिहैट पर होस्ट किया जा सकता है)?
  3. फ़ाइलें निर्दिष्ट करने के लिए स्थान कैसे हैं? क्या यह .debफ़ाइल द्वारा निर्दिष्ट है ?
  4. रिमोट मशीन रिपॉजिटरी तक कैसे पहुँच रही है? क्या यह सिर्फ ftp (s) या http (s) है?
  5. क्या वह मशीन जो रिपॉजिटरी को चलाने वाले विशेष सॉफ्टवेयर (जैसे गिट रिपॉजिटरी के लिए गिटलैब) को होस्ट कर रही है, या यह सिर्फ कुछ संरचित फाइल सिस्टम है?

जवाबों:


47

आपको https://wiki.debian.org/Packaging पर नज़र डालने की ज़रूरत है - वहां पैकेजिंग ट्यूटोरियल आपको बहुत मदद करेगा, साथ ही नए अनुचर गाइड के कुछ हिस्सों को भी।

आपके प्रश्नों के क्रम में:

  1. रिपॉजिटरी में "सूची" फाइलें हैं। जैसे।, http://http.us.debian.org/debian/dists/stretch/main/binary-amd64/Packages.xzapt-get updateइन सूची फ़ाइलों को डाउनलोड करता है, और उन्हें स्टोर करता है /var/lib/apt/lists। सूची फ़ाइलों में मेटाडेटा का एक गुच्छा और .deb खोजने के लिए एक रिश्तेदार URL सहित सभी पैकेजों की सूची होती है। (वे मानव पठनीय सादे पाठ फ़ाइलें हैं, ताकि आप इसे देख सकें)।

  2. ओएस कोई फर्क नहीं पड़ता। आप इसे विंडोज पर होस्ट कर सकते हैं, अगर आप चाहते थे। (ठीक है, आपको शायद फ़ाइल नामों के साथ समस्या हो सकती है जिसे विंडोज पसंद नहीं करता है।) (# 4 और # 5 भी देखें)।

  3. हां, यह डिबेट फ़ाइल के अंदर है। एक डिब फाइल वास्तव में एक आर्काइव (उपयोग करके ar) है। अंदर कुछ टार फाइलें हैं; उनमें से एक (अनिवार्य रूप से) निकाला जाता है /

  4. यह सिर्फ HTTP (या HTTPS, या FTP, या ... apt-get का समर्थन करता है बहुत सारे प्रोटोकॉल)। हालांकि कुछ खास नहीं। ध्यान दें कि रिलीज़ फ़ाइलें हैं, जिन पर gpg के साथ हस्ताक्षर किए गए हैं, जो अखंडता की गारंटी भी w / o HTTPS है। डेबियन दर्पण ज्यादातर HTTP का उपयोग करते हैं, HTTP का नहीं। (कुछ समर्थन HTTPS के साथ ही गोपनीयता के लिए)।

  5. यह सिर्फ एक संरचित फाइल सिस्टम है।

एक त्वरित, उच्च-स्तरीय अवलोकन कि कैसे apt-get एक पैकेज स्रोत के साथ सहभागिता करता है:

  1. आप अपने source.list फ़ाइल में देखने के लिए कौन से स्रोतों को कॉन्फ़िगर करते हैं। एक पंक्ति पर विचार करें जैसे:

    deb http://http.us.debian.org/debian/ stretch main
    

    debयह गेटिंग के लिए एक स्रोत है .deb (बाइनरी) फाइलें; फिर URL-उपसर्ग, सुइट / रिलीज़ ("खिंचाव"), और घटक ("मुख्य") है।

  2. apt-get में आर्किटेक्चर की एक सूची है, यह dpkg से प्राप्त होता है। आइए बताते dpkg --print-architectureहै amd64। apt-get अब URLs का निर्माण कर सकता है जो वास्तव में डाउनलोड करने वाला है, URL-उपसर्ग, शब्द "dists", सूट, घटक और आर्किटेक्चर के संयोजन से। फिर यह कुछ निश्चित फ़ाइलनामों पर टैप करता है, जैसे "Package.xz"। वह URL ऊपर (# 1 में) देता है। परिभाषित नामों / रास्तों के साथ कुछ और फाइलें हैं, जैसे रिलीज़ फ़ाइल http://http.us.debian.org/debian/dists/stretch/Release और इसके हस्ताक्षर (समान, .gpg संलग्न)। ये सभी (संभवतः-संपीड़ित) सादे-पाठ फ़ाइलें हैं। रिलीज़ फ़ाइल में अन्य फ़ाइलों के लिए चेकसम हैं apt-get डाउनलोड होने जा रहा है, जैसे Package.xz।

  3. Package.xz फ़ाइल उस सुइट / कोडनाम / आर्किटेक्चर के सभी पैकेजों को सूचीबद्ध करती है । यह उस पथ को भी देता है जहां वह फ़ाइल स्थित है; उदाहरण के लिए pool/main/0/0ad/0ad_0.0.21-2_amd64.deb

  4. जब आप किसी पैकेज को डाउनलोड करने के लिए apt-get से पूछते हैं, तो यह पैकेज डाउनलोड करने के लिए उस स्थान + आधार URL का उपयोग करता है, ताकि पैकेज http://http.us.debian.org/debian/pool/main/0/0ad पर है /0ad_0.0.21-2_amd64.deb

  5. इसके sourceबजाय अन्य दिलचस्प निर्देशिका है binary-amd64। इसका उपयोग आपकी deb-srcप्रविष्टियों के लिए किया जाता है ; इसमें स्रोत पैकेज के बारे में जानकारी है (और अन्यथा काफी समान है)।

  6. कुछ अन्य चीजें हैं (उनमें से सभी वैकल्पिक हैं, मेरा मानना ​​है) जो रिपॉजिटरी का हिस्सा हो सकता है (यानी, HTTP के माध्यम से उपलब्ध है): Package.xz फ़ाइल के विभिन्न संस्करणों के बीच भिन्न होता है; पैकेज विवरणों के अनुवाद, हर इंस्टॉल करने योग्य फ़ाइल की पूरी सूची और वह किस पैकेज से संबंधित है (सामग्री-amd64.gz, उदाहरण के लिए, apt-file, apt-get द्वारा नहीं) आदि। ये संभावना आपके लिए प्रासंगिक नहीं हैं। लेकिन आप http://http.us.debian.org/debian/dists/stretch/ के आसपास ब्राउज़ करके उन्हें देख सकते हैं ; उनमें से ज्यादातर सादा पाठ फ़ाइलें हैं।

ये सभी फाइलें सादा पाठ हैं। वे, सिद्धांत रूप में, हाथ से बनाया जा सकता है। व्यवहार में, हर कोई इनमें से एक रिपॉजिटरी जेनरेशन टूल्स का उपयोग करता है । यहाँ - और मैं सावधानी बरतता हूँ कि यह एक विकल्प था जो बहुत समय पहले बना था, इसलिए पुराना हो सकता है - हम मिनी-इंस्टॉलेशन का उपयोग करते हैं। उन उपकरणों का आउटपुट साधारण फाइलें हैं या, सबसे कम, सहानुभूति हैं। जो भी वेब सर्वर आपको चाहिए, आप उन्हें rsync कर सकते हैं।


मुझे इससे हराएं ;-)। unix.stackexchange.com/q/285635/86440 चीजों के अखंडता पहलू (4 अंक) को कवर करता है। दर्पण पक्ष पर एफ़टीपी समर्थन हाल ही में IIRC सक्रिय किया गया था।
स्टीफन किट

# 2 के बारे में, debian.org/doc/manuals/distribute-deb/… अलग तरह से बताता है। धन्यवाद
user1032531

# 5 के बारे में, wiki.debian.org/DebianRepository/…
user1032531

1
@ user1032531 # 2 पैकेज बनाना सबसे अच्छा डेबियन पर किया जाता है। लेकिन आपका वेब सर्वर कुछ भी हो सकता है। (आमतौर पर, आप अपनी बिल्ड होस्ट पर पैकेज बनाते हैं, संभवतः संपूर्ण रिपॉजिटरी संरचना भी, फिर इसे वेबसर्वर पर अपलोड कर सकते हैं।) # 5 वे उपकरण आपको संरचित फाइल सिस्टम बनाने में मदद करते हैं, जिसमें सभी सूचियां फाइलें, हस्ताक्षरित रिलीज फाइलें आदि शामिल हैं (वे डेबियन पर चलने के लिए भी शायद सबसे आसान हैं)।
derobert

2
@FaheemMitha पैकेज (कुछ संपीड़न, आधुनिक उपयुक्त पसंद .xz) निश्चित रूप से डाउनलोड किया जाता है, हवाओं में /var/lib/apt/lists/। सामग्री को एप-फाइल और ऑटो-एप द्वारा डाउनलोड किया जाता है।
derobert
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.