एपीटी (सॉफ्टवेयर)

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

उपयोग
एपीटी एपीटी नामक पैकग में वितरित टूल्स का एक संग्रह है। एपीटी का एक महत्वपूर्ण भाग फ़ंक्शंस की सी++ लाइब्रेरी में परिभाषित किया गया है; एपीटी में पैकग से डीलिंग (सम्पर्क) के लिए कमांड-लाइन प्रोग्राम भी सम्मिलित हैं, जो लाइब्रेरी का उपयोग करते हैं। ऐसे तीन प्रोग्राम,   और  हैं | वे आमतौर पर उदाहरणों में उपयोग किए जाते हैं क्योंकि वे सरल और बहुव्यापी हैं। एपीटी पैकग सभी उपस्थित डेबियन मोचन में "महत्वपूर्ण" वरीयता का है, और इसलिए इसे डिफ़ॉल्ट डेबियन अधिष्ठापन में सम्मिलित किया गया है। एपीटी को डीपीकेजी का अग्रांत माना जा सकता है, जो पुराने डीसेलेक्ट अग्रांत की तुलना में अधिक उपयोगी है। जबकि   अलग-अलग पैकग पर क्रिया करता है, एपीटी उनके मध्य संबंधों (विशेष रूप से निर्भरता) का प्रबंधन करता है, साथ ही उच्च-स्तरीय संस्करण निर्णयों (मोचन ट्रैकिंग और संस्करण पिनिंग) की सोर्सिंग और प्रबंधन भी करता है।

एपीटी को अधिकतर डेबियन की उत्तम विशेषताओं में से एक माना जाता है,   जिसका श्रेय डेबियन डेवलपर्स डेबियन की पॉलिसी में सख्त गुणवत्ता नियंत्रण को देते हैं।

एपीटी की एक प्रमुख विशेषता यह है कि वह  को कैसे कॉल करता है - यह अधिष्ठापित या हटाए जाने वाले पैकगों की सूची को टोपोलॉजिकल शाटन करता है और सबसे अच्छे संभव अनुक्रम में   को कॉल करता है। कुछ स्थितियों में, यह   के  विकल्पों का उपयोग करता है। हालाँकि यह केवल तभी ऐसा करता है जब यह परिकलन करने में असमर्थ होता है कि उस कारण से कैसे बचा जाए जिसके लिए dpkg को अत्यावश्यक क्रिया की आवश्यकता होती है।

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

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

एपीटी, apt-get की द्वन्‍द्व रिजल्यूशन प्रणाली द्वारा लिए गए निर्णयों को ओवरराइड करने के लिए अन्य कमांड विकल्प प्रदान करते है। एक विकल्प पैकग के किसी विशेष संस्करण को बाध्य करना है। यह किसी पैकग को डाउनग्रेड कर सकता है और आश्रित सॉफ़्टवेयर को निष्क्रिय कर सकता है, इसलिए उपयोक्‍ता को सावधान रहना चाहिए।

अंत में, तंत्र उपयोक्‍ता को अलग-अलग संकुलों के लिए एक वैकल्पिक अधिष्ठापन पॉलिसी बनाने की अनुमति देता है।

उपयोक्‍ता POSIX नियमित एक्सप्रेशन का उपयोग करके संकुलों को निर्दिष्ट कर सकता है।

एपीटी अपने संकुलों की कैश्ड सूची खोजता है और उन आश्रितों को सूचीबद्ध करता है जिन्हें अधिष्ठापित या अद्यतन किया जाना चाहिए।

एपीटी आश्रितों को स्वचालित रूप से पुनर्प्राप्त, कॉन्फ़िगर और अधिष्ठापित करता है।

ट्रिगर आस्थगित क्रियाओं का ट्रीटमेन्ट (विवेचन) है।

अपडेट, अपग्रेड और डिस्ट-अपग्रेड
apt और  के उपयोग के तरीके जो अधिष्ठापित संकुलों को अपडेट करने की सुविधा प्रदान करते हैं, उनमें सम्मिलित हैं:
 * अपडेट पैकग इंडेक्स फ़ाइलों को उनके स्रोतों से पुन: सिंक्रनाइज़ करने के लिए किया जाता है। उपलब्ध संकुलों की सूची में निर्दिष्ट लोकेशन(एस) से प्राप्त की जाती है। उदाहरण के लिए, डेबियन संग्रह का उपयोग करते समय, यह कमांड  फ़ाइलों को पुनर्प्राप्त और स्कैन करता है, ताकि नए और अपडेट संकुलों के बारे में जानकारी उपलब्ध हो सके।
 * अपग्रेड का उपयोग में सूचीबद्ध स्रोतों से तंत्र पर वर्तमान में अधिष्ठापित सभी संकुलों के नवीनतम संस्करणों को अधिष्ठापित करने के लिए किया जाता है। वर्तमान में उपलब्ध नए संस्करणों के साथ अधिष्ठापित संकुलों को पुनः प्राप्त और अपग्रेड किया जाता है; किसी भी परिस्थिति में वर्तमान में अधिष्ठापित संकुलों को हटाया नहीं जाता है, या पहले से अधिष्ठापित नहीं किए गए संकुलों को पुनः प्राप्त और अधिष्ठापित नहीं किया गया है। वर्तमान में अधिष्ठापित संकुलों के नए संस्करण जिन्हें किसी अन्य संकुल की अधिष्ठापन स्थिति को बदले बिना अपग्रेड नहीं किया जा सकता है, उन्हें उनके वर्तमान संस्करण में ही छोड़ दिया जाएगा।
 * और, अपग्रेड का कार्य करने के अलावा, संकुलों के नए संस्करणों के साथ बदलती आश्रितता को भी समझदारी से हैंडल करता है; apt और के पास एक "स्मार्ट" द्वन्‍द्व रिजल्यूशन प्रणाली है, और यदि आवश्यक हो तो कम महत्वपूर्ण संकुलों की कीमत पर सबसे महत्वपूर्ण संकुलों को अपग्रेड करने का प्रयास किया जाएगा। फ़ाइल में उन स्थानों की एक सूची है जहाँ से वांछित संकुल फ़ाइलें पुनर्प्राप्त की जा सकती हैं। एप्टीट्यूड में एक स्मार्ट डिस्ट-अपग्रेड सुविधा है जिसे पूर्ण-अपग्रेड कहा जाता है।

कॉन्फ़िगरेशन और फ़ाइलें
में एपीटी विन्यास फ़ोल्डर और फ़ाइलें सम्मिलित हैं।

एपीटी कॉन्फ़िगरेशन क्वेरी प्रोग्राम है।  विन्यास दिखाता है।

फ़ाइलें

 * : संकुल आनयन के लिए लोकेशन।
 * : अतिरिक्त स्रोत सूची के खंड।
 * : एपीटी विन्यास फ़ाइल।
 * : एपीटी विन्यास फ़ाइल के खंड।
 * : संस्करण वरीयता फ़ाइलों के साथ निर्देशिका। यह वह स्थान है जहां  पिनिंग  निर्दिष्ट है, यानी एक अलग स्रोत से या वितरण के एक अलग संस्करण से कुछ संकुलों प्राप्त करने की वरीयता।
 * : पुनर्प्राप्त संकुल फ़ाइलों के लिए संग्रहण क्षेत्र।
 * : संक्रमण में संकुल फ़ाइलों के लिए भंडारण क्षेत्र।
 * : में निर्दिष्ट प्रत्येक संकुल संसाधन के लिए अवस्था की सूचना के लिए भंडारण क्षेत्र
 * : संक्रमण में अवस्था की सूचना के लिए भंडारण क्षेत्र।

स्रोत
एपीटी सॉफ़्टवेयर खोजने और निर्भरताओं को हल करने के लिए सॉफ्टवेयर रिपॉजिटरी की अवधारणा पर निर्भर करता है। एपीटी के लिए, एक रिपॉजिटरी एक निर्देशिका है जिसमें एक इंडेक्स फ़ाइल के साथ पैकगहोते हैं। इसे एक नेटवर्कयुक्त या सीडी रॉम  स्थान के रूप में निर्दिष्ट किया जा सकता है।  डेबियन परियोजना डाउनलोड और अधिष्ठापनके लिए तैयार 50,000 से अधिक सॉफ़्टवेयर पैकेजों का एक केंद्रीय भंडार रखती है। एपीटी के स्रोतों.सूची कॉन्फ़िगरेशन फ़ाइल में कितने भी अतिरिक्त रिपॉजिटरी जोड़े जा सकते हैं और उसके बाद एपीटी द्वारा पूछताछ की जाएगी। ग्राफिकल फ्रंट-एंड अक्सर संशोधित करने की अनुमति देते हैं   अधिक केवल. एक बार एक पैकगरिपॉजिटरी निर्दिष्ट हो जाने के बाद (जैसे सिस्टम इंस्टॉलेशन के दौरान), उस रिपॉजिटरी में पैकगको स्रोत निर्दिष्ट किए बिना इंस्टॉल किया जा सकता है और स्वचालित रूप से अप-टू-डेट रखा जाएगा।

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

समस्या तब प्रकट हो सकती है जब कई स्रोत समान पैकगप्रदान करते हैं। ऐसे संभावित परस्पर विरोधी स्रोत वाले सिस्टम एपीटी पिनिंग का उपयोग यह नियंत्रित करने के लिए कर सकते हैं कि किन स्रोतों को प्राथमिकता दी जानी चाहिए।

एपीटी पिनिंग
एपीटी पिनिंग सुविधा उपयोगकर्ताओं को एपीटी को पैकगके विशेष संस्करणों को चुनने के लिए बाध्य करने की अनुमति देती है जो विभिन्न रिपॉजिटरी से अलग-अलग संस्करणों में उपलब्ध हो सकते हैं। यह प्रशासकों को यह सुनिश्चित करने की अनुमति देता है कि पैकगउन संस्करणों में अपग्रेड नहीं किए गए हैं जो सिस्टम पर अन्य पैकेजों के साथ संघर्ष कर सकते हैं, या जिन्हें अवांछित परिवर्तनों के लिए पर्याप्त रूप से परीक्षण नहीं किया गया है।

ऐसा करने के लिए, एपीटी की वरीयता फ़ाइल में पिन संशोधित किया जाना चाहिए, हालांकि ग्राफिकल फ्रंट-एंड अक्सर पिनिंग को सरल बनाते हैं।

फ्रंट-एंड्स
कई अन्य फ्रंटएंड और बैकएंड | एपीटी के फ्रंट-एंड मौजूद हैं, जो अधिक उन्नत इंस्टॉलेशन फ़ंक्शंस और अधिक सहज ज्ञान युक्त इंटरफेस प्रदान करते हैं। इसमे सम्मिलित है:
 * सिनैप्टिक (सॉफ्टवेयर), एक जीटीके ग्राफिकल यूज़र अंतरापृष्ठ
 * उबंटू सॉफ्टवेयर सेंटर, उबंटू परियोजना द्वारा विकसित जीटीके ग्राफिकल यूजर इंटरफेस
 * एप्टीट्यूड (सॉफ्टवेयर), कमांड लाइन इंटरफेस  के साथ एक कंसोल क्लाइंट और ncurses- आधारित टेक्स्ट-आधारित यूजर इंटरफेस इंटरफेस
 * केपैकेज, कहाँ  का हिस्सा
 * निपुण पैकगमैनेजर, केडीई के लिए ग्राफिकल यूजर इंटरफेस (डिब, आरपीएम, बीएसडी)
 * पैकेजकिट, एक डी-बस फ़्रंटएंड, जिसे freedesktop.org द्वारा अनुरक्षित किया जाता है, GNOME सॉफ़्टवेयर और KDE डिस्कवर को शक्ति प्रदान करता है।
 * GDebi, Ubuntu के लिए प्रायोजित एक GTK-आधारित टूल। (एक क्यूटी संस्करण भी है, जो उबंटू रिपॉजिटरी में gdebi-kde के रूप में उपलब्ध है।)
 * apt-cdrom, एपीटी की उपलब्ध रिपॉजिटरी की सूची में एक नया CDROM जोड़ने का एक तरीका (sources.lists)। एपीटी सिस्टम में सीडी जोड़ने के लिए apt-cdrom का उपयोग करना आवश्यक है, यह हाथ से नहीं किया जा सकता है।
 * apt-zip, हटाने योग्य मीडिया, विशेष रूप से उ स बी फ्लैश ड्राइव के साथ एपीटी का उपयोग करने का एक तरीका।
 * aptURL, एक उबंटू सॉफ्टवेयर पैकगजो एंड-यूज़र एप्लिकेशन को ब्राउज़र के माध्यम से सिंगल-क्लिक के साथ इंस्टॉल करने में सक्षम बनाता है।
 * Cydia, एपीटी पर आधारित आईओएस जेलब्रेकिंग के लिए एक पैकगमैनेजर (टेलीस्फोरियो प्रोजेक्ट के हिस्से के रूप में iOS में पोर्ट किया गया)।
 * Sileo, Cydia की तरह, एपीटी के नए संस्करणों के आधार पर जेलब्रेक iOS के लिए एक पैकगमैनेजर (Electra टीम द्वारा iOS में पोर्ट किया गया)
 * gnome-apt, एक GTK/GNOME-विजेट-आधारित ग्राफिकल फ्रंट-एंड। कहर पेनिंगटन द्वारा विकसित
 * म्यूऑन डिस्कवर (पिछला म्यूऑन सॉफ्टवेयर सेंटर), एक क्यूटी-आधारित ग्राफिकल यूजर इंटरफेस
 * Hildon एप्लिकेशन मैनेजर (Maemo एप्लिकेशन), एक Maemo फ्रंट-एंड
 * apticron, सिस्टम एडमिनिस्ट्रेटर (sysadmin) को लंबित अद्यतनों की ईमेल सूचनाओं को cron के माध्यम से चलाने के लिए डिज़ाइन की गई सेवा।
 * एपीटी डेमन, एक फ्रंट-एंड जो डेमॉन (कंप्यूटिंग) के रूप में चलता है, जो उपयोगकर्ताओं को पोलकिट के माध्यम से सॉफ़्टवेयर स्थापित करने की अनुमति देता है और बदले में उबंटू सॉफ्टवेयर सेंटर (लिनक्स टकसाल द्वारा लिनक्स मिंट # सॉफ्टवेयर के साथ) द्वारा उपयोग किया जाने वाला ढांचा है।
 * पैकगइंस्टॉलर, एमएक्स लिनक्स का हिस्सा।
 * Apt-offline: सीधे इंटरनेट कनेक्शन का उपयोग किए बिना किसी भी डेबियन-प्रकार लिनक्स इंस्टॉलेशन में उपलब्ध गैर-कंटेनरीकृत परिवर्तन करने का एक सुविधाजनक तरीका। हालाँकि, एक अस्थायी प्रत्यक्ष कनेक्शन की आवश्यकता हो सकती है, जैसे कि कुछ प्रासंगिक प्रकार के लिनक्स पर Apt-offline स्थापित करना, और Ubuntu#Package_Archives को स्रोत-सूची में जोड़ना।

एपीटी फ्रंट-एंड कर सकते हैं:
 * नए पैकेजों की खोज करें;
 * अपग्रेड पैकेज;
 * संकुल स्थापित करें या हटाएं और
 * पूरे सिस्टम को एक नई रिलीज में अपग्रेड करें।

एपीटी फ्रंट-एंड स्थापित या अपग्रेड किए जा रहे पैकेजों की निर्भरता को सूचीबद्ध कर सकता है, व्यवस्थापक से पूछ सकता है कि क्या नए स्थापित पैकेजों द्वारा अनुशंसित या सुझाए गए पैकेजों को भी स्थापित किया जाना चाहिए, स्वचालित रूप से निर्भरताएं स्थापित करें और सिस्टम पर अन्य संचालन करें जैसे कि अप्रचलित फ़ाइलों और पैकेजों को हटाना।

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

नाम की धार्मिक प्रकृति पर चिंताओं के कारण 'देवता' नाम को परियोजना के आधिकारिक नाम के रूप में छोड़ दिया गया था। काफी आंतरिक और सार्वजनिक चर्चा के बाद अंततः एपीटी नाम तय किया गया। अंततः आईआरसी पर नाम प्रस्तावित किया गया, स्वीकार किया गया और फिर मेलिंग सूचियों पर अंतिम रूप दिया गया। एपीटी को 1998 में पेश किया गया था और मूल परीक्षण बिल्ड IRC पर परिचालित किए गए थे। पहला डेबियन संस्करण जिसमें यह सम्मिलित था, डेबियन 2.1 था, जो 9 मार्च 1999 को जारी किया गया था। अंत में देवता परियोजना का मूल लक्ष्य की जगह  यूजर इंटरफेस विफल रहा। प्रोजेक्ट के यूजर इंटरफेस हिस्से पर काम छोड़ दिया गया था (यूजर इंटरफेस निर्देशिकाओं को समवर्ती संस्करण सिस्टम से हटा दिया गया था) के पहले सार्वजनिक रिलीज के बाद. एपीटी के रूप में प्रतिक्रिया  विधि और एक कमांड लाइन उपयोगिता इतनी महान और सकारात्मक थी कि सभी विकास प्रयास उपकरण को बनाए रखने और सुधारने पर केंद्रित थे। यह बहुत बाद तक नहीं था कि कई स्वतंत्र लोगों ने शीर्ष पर यूजर इंटरफेस का निर्माण किया.

आखिरकार, एक नई टीम ने परियोजना को चुना, नई सुविधाओं का निर्माण शुरू किया और एपीटी का संस्करण 0.6 जारी किया, जिसने पैकगरिपॉजिटरी को प्रमाणित करने के लिए मजबूत जीएनयू प्राइवेसी गार्ड अंगुली का हस्ताक्षर  का उपयोग करते हुए सिक्योर एपीटी फीचर पेश किया।

वेरिएंट
एपीटी को मूल रूप से डेबियन के .deb संकुलों के साथ काम करने के लिए dpkg के अग्रांत के रूप में डिज़ाइन किया गया था। आरपीएम संकुल मैनेजर तंत्र के साथ भी काम करने के लिए आपरिवर्तित एपीटी का एक संस्करण एपीटी-आरपीएम के रूप में जारी किया गया था। फ़िंक प्रोजेक्ट ने अपने कुछ संकुल प्रबंधन कार्यों के लिए एपीटी को मैक ओएस एक्स में पोर्ट किया है, और एपीटी ओपनसोलारिस में भी उपलब्ध है।

apt-फ़ाइल
apt-file एक कमांड है, जिसे एपीटी से अलग पैक किया गया है, यह पता लगाने के लिए कि किस पैकग में एक विशिष्ट फ़ाइल सम्मिलित है, या रिमोट रिपॉजिटरी पर पैकग में सम्मिलित सभी फाइलों को सूचीबद्ध करने के लिए।

यह भी देखें

 * एलियन
 * ऐपस्ट्रीम
 * एपीटीओएनसीडी
 * जीएनयू गुइक्स
 * वाजिग
 * सॉफ्टवेयर संकुल प्रबंधन प्रणालियों की सूची

बाहरी संबंध

 * एपीटी HOWTO
 * एपीटी Tutorial
 * Chapter 2. Debian package management - Debian Reference
 * Chapter 2. Debian package management - Debian Reference