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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

फ़ाइलें

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

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

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

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

समस्याएँ तब सामने आ सकती हैं जब कई स्रोत एक ही पैकग(एस) प्रस्तुत करते हैं। जिन तंत्रों में ऐसे संभावित रूप से असंगत स्रोत हैं, वे एपीटी पिनिंग का उपयोग यह नियंत्रित करने के लिए कर सकते हैं कि किन स्रोतों को प्राथमिकता दी जानी चाहिए।

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

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

अग्रांत्स
एपीटी के कई अन्य अग्रांत्स उपस्थित हैं, जो अधिक उन्नत अधिष्ठापन फ़ंक्शन और अधिक सहज अंतरापृष्ठ प्रदान करते हैं। इसमे सम्मिलित है:
 * सिनैप्टिक, एक जीटीके ग्राफिकल उपयोक्‍ता अंतरापृष्ठ
 * उबंटू सॉफ्टवेयर सेंटर, उबंटू प्रोजैक्ट द्वारा विकसित एक जीटीके ग्राफिकल उपयोक्‍ता अंतरापृष्ठ
 * एप्टीट्यूड,सीएलआई और एनसीर्सेस-आधारित टीयूआई अंतरापृष्ठ वाला एक कंसोल क्लाइंट
 * केपैकेज, केडीई का भाग
 * कुशल पैकग मैनेजर, केडीई के लिए एक ग्राफिकल उपयोक्‍ता अंतरापृष्ठ (deb, rpm, bsd)
 * पैकेजकिट, एक डी-बस अग्रांत, जिसका रखरखाव freedesktop.org द्वारा किया जाता है, जीनोम सॉफ़्टवेयर और केडीई डिस्कवर को ऊर्जा प्रदान करता है।
 * GDebi, उबंटू के लिए प्रायोजित एक GTK-आधारित टूल है। (एक Qt संस्करण भी है, जो उबंटू रिपॉजिटरी में gdebi-kde के रूप में उपलब्ध है।)
 * apt-cdrom, एपीटी की उपलब्ध रिपॉजिटरी (sources.lists) की सूची में एक नया सीडीरॉम जोड़ने का एक तरीका है। एपीटी तंत्र में CDs जोड़ने के लिए apt-cdrom का उपयोग करना आवश्यक है, इसे हाथ से नहीं किया जा सकता है।
 * apt-zip, अपनीय मीडिया, विशेष रूप से यूएसबी फ्लैश ड्राइव के साथ एपीटी का उपयोग करने का एक तरीका।
 * aptURL, एक उबंटू सॉफ्टवेयर पैकग जो अंतिम-उपयोक्‍ता एप्लिकेशन को ब्राउज़र के माध्यम से सिंगल-क्लिक के साथ अधिष्ठापित करने में सक्षम बनाता है।
 * Cydia, एपीटी पर आधारित जेलब्रेक iOS के लिए एक पैकग मैनेजर (टेलीस्फोरियो प्रोजेक्ट के भाग के रूप में iOS में पोर्ट किया गया)।
 * Sileo, साइडिया के जैसे, एपीटी के नए संस्करणों पर आधारित जेलब्रेक किए गए iOS के लिए एक पैकग मैनेजर (इलेक्ट्रा टीम द्वारा iOS में पोर्ट किया गया)
 * gnome-apt, एक जीटीके/जीनोम-विजेट-आधारित ग्राफिकल अग्रांत। हैवॉक पेनिंगटन द्वारा विकसित
 * म्यूऑन डिस्कवर (पूर्व म्यूऑन सॉफ्टवेयर सेंटर), एक क्यूटी-आधारित ग्राफिकल उपयोक्‍ता अंतरापृष्ठ
 * हिल्डन एप्लिकेशन मैनेजर (मैमो एप्लिकेशन), एक मैमो अग्रांत
 * एप्टिक्रॉन, एक तंत्र प्रशासक (sysadmin) को लंबित अपडेट की ईमेल सूचनाओं के लिए क्रॉन के माध्यम से चलाने के लिए डिज़ाइन की गई सेवा।
 * एपीटी डेमॉन, एक अग्रांत जो उपयोगकर्ताओं को पॉलिसीकिट के माध्यम से सॉफ़्टवेयर अधिष्ठापित करने की अनुमति देने के लिए एक सेवा के रूप में चलता है और बदले में उबंटू सॉफ्टवेयर सेंटर (लिनक्स मिंट सॉफ्टवेयर मैनेजर के साथ) द्वारा उपयोग किया जाने वाला फ्रेमवर्क है।
 * पैकग इंस्टॉलर, एमएक्स लिनक्स का भाग।
 * एपीटी-ऑफ़लाइन: सीधे इंटरनेट कनेक्शन का उपयोग किए बिना किसी भी डेबियन-प्रकार लिनक्स अधिष्ठापन में उपलब्ध गैर-कंटेनरीकृत परिवर्तन करने का एक सुविधाजनक तरीका। हालाँकि, एक अस्थायी प्रत्यक्ष कनेक्शन की आवश्यकता हो सकती है, जैसे कि कुछ प्रासंगिक प्रकार के लिनक्स पर Apt-offline अधिष्ठापित करना, और पीपीए को स्रोत-सूची में जोड़ना।

एपीटी अग्रांत ये कर सकते हैं:
 * नए पैकगों की खोज;
 * अपग्रेड पैकग;
 * पैकग अधिष्ठापन या रिमूव और
 * पूर्ण तंत्र को एक नए मोचन में अपग्रेड कर सकते हैं।

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

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

एपीटी का अधिकांश मूल विकास इंटरनेट रिले चैट (IRC) पर किया गया था, इसलिए रिकॉर्ड नष्ट गए हैं। 'डीइटी निर्माण टीम' मेलिंग सूची संग्रह में केवल मुख्य विशेषताएँ सम्मिलित हैं।

काफी आंतरिक और सार्वजनिक विचार-विमर्श के बाद अंततः एपीटी नाम तय किया गया था। अंततः नाम आईआरसी पर प्रस्तावित, स्वीकार किया गया और फिर मेलिंग सूचियों पर अंतिम रूप दिया गया था।

एपीटी को 1998 में प्रस्तुत किया गया था और मूल परीक्षण निर्माण आईआरसी पर प्रसारित किए गए थे। पहला डेबियन संस्करण जिसमें इसे सम्मिलित किया गया था, डेबियन 2.1 था, जो 9 मार्च 1999 को जारी किया गया था।

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

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

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

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

यह भी देखें

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

बाहरी संबंध

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