Installed: (none) बताने वाला VPN पैकेज गायब नहीं है; वह बस इंस्टॉल नहीं है। यह तय करने वाली पंक्ति कि आप उसे इंस्टॉल कर सकते हैं या नहीं, Candidate है, जिसे APT इंडेक्स, suite नाम, आर्किटेक्चर और लागू किसी भी पिनिंग नियम से निकालता है। गायब हुए VPN पैकेज की अधिकांश रिपोर्टें पैकेजिंग समस्या नहीं, उम्मीदवार की समस्या निकलती हैं। एक भी स्रोत प्रविष्टि छूने से पहले दोनों पंक्तियाँ पढ़ें।

मैं पहले उम्मीदवार जाँचता हूँ क्योंकि इसमें एक ही कमांड लगती है और आधी सामान्य अटकलें बाहर हो जाती हैं।

apt-cache policy का आउटपुट आपको क्या बताता है

apt-cache policy स्थानीय पैकेज कैश पढ़ता है, नेटवर्क नहीं। यह इंस्टॉल किया गया संस्करण, उम्मीदवार संस्करण और हर उस इंडेक्स की तालिका छापता है जो पैकेज देता है, साथ में उससे जुड़ी प्राथमिकता भी।

apt-cache policy openvpn
apt-cache madison openvpn
apt list -a network-manager-openvpn

उम्मीदवार वह संस्करण है जिसे APT अभी चुनता। madison बताता है कि हर स्रोत अपनी प्राथमिकता के साथ क्या देता है, और इसी तरह आप ऐसा पैकेज पकड़ते हैं जो किसी इंडेक्स में है पर पिन मुकाबला हार जाता है। apt-cache का मैनुअल दोनों को कैश पढ़ना बताता है, इसलिए इनमें से कोई भी यह साबित नहीं करता कि मिरर इस समय पहुँच में है।

यदि उम्मीदवार पंक्ति खाली है या (none) दिखाती है, तो कॉन्फ़िगर किए गए स्रोतों में इस सिस्टम के लिए, जैसा वह कॉन्फ़िगर है, कुछ भी योग्य नहीं है।

उम्मीदवार के गायब होने के चार कारण

व्यवहार में कारण लगभग हमेशा चार चीज़ों में से एक होता है, और हर एक का अलग इलाज है।

आपके स्रोतों में suite नाम उसी डिस्ट्रीब्यूशन से मेल खाना चाहिए जिसके लिए पैकेज बना था। trixie मिरर की ओर इंगित Debian bookworm सिस्टम, या अपग्रेड के दौरान sources.list.d फ़ाइल में नाम बदला गया Ubuntu संस्करण, केवल दूसरे suite में मौजूद पैकेजों के लिए कुछ नहीं सुलझाता। हर प्रविष्टि में lsb_release -cs की तुलना suite फ़ील्ड से करें।

APT केवल उन आर्किटेक्चर के लिए बने पैकेज देखता है जिन्हें dpkg जानता है। 32-बिट कंटेनर, arm64 इमेज या केवल amd64 के लिए भेजा जाने वाला पैकेज माँगता Raspberry Pi इंस्टॉल त्रुटि संदेश के बजाय खाली उम्मीदवार पाता है। dpkg --print-architecture और dpkg --print-foreign-architectures बताते हैं कि आप वास्तव में किस सेट में हैं।

घटक भी मायने रखते हैं। केवल main सक्षम होने पर contrib या non-free का पैकेज अदृश्य रहता है, और Ubuntu का universe भी वही व्यवहार करता है। इंडेक्स मौजूद है और पैकेज उसमें है; बस आपकी सक्षम घटक सूची उसे शामिल नहीं करती।

पिनिंग शांत वाला कारण है। /etc/apt/preferences.d की कोई फ़ाइल पैकेज को इंस्टॉल सीमा से नीचे सीमित कर सकती है, और फिर पूरी तरह अच्छा उम्मीदवार आउटपुट से गायब हो जाता है जबकि इंडेक्स अब भी उसे सूचीबद्ध करता है। चूँकि policy हर स्रोत के बगल में प्राथमिकताएँ छापता है, वह पैकेज जिसके हर स्रोत पर कम पिन संख्या है, संकेत है।

पुराने इंडेक्स गायब पैकेज जैसे दिखते हैं

कैश एक क्षणिक चित्र है। यदि पिछला apt update किसी एक इंडेक्स पर विफल हुआ, तो प्रश्न पुरानी प्रति से उत्तर देते रहते हैं, और जिस पैकेज की आप अपेक्षा करते हैं वह उस प्रति में न हो।

apt update हर इंडेक्स के लिए त्रुटियाँ छापता है, इसलिए सीधे अंतिम पंक्ति तक स्क्रॉल करने के बजाय उन्हें पढ़ें।

हस्ताक्षर त्रुटि, समाप्त release फ़ाइल या अगम्य मिरर के कारण विफल रिफ़्रेश पिछला इंडेक्स अपनी जगह छोड़ देता है। यह समझदार डिज़ाइन है, क्योंकि मिरर के थोड़ी देर बंद होने पर यह काम करने वाला कैश बनाए रखता है। दुष्प्रभाव यह है कि रिपॉज़िटरी ऑफ़लाइन होने पर भी खोज सफल हो सकती है। इसका यह भी अर्थ है कि इंडेक्स अंतिम बार कब लिया गया, यह जानने तक पैकेज का अनुपस्थित होना कुछ साबित नहीं करता। पैकेज के नाम को दोष देने से पहले /var/lib/apt/lists के अंतर्गत फ़ाइलों की तारीखें जाँचें।

उस पैकेज को नाम दें जो वास्तव में चाहिए

OpenVPN एक डेमॉन है, और लोगों को आम तौर पर जो हिस्से चाहिए होते हैं वे अलग पैकेज हैं।

इंजन, NetworkManager प्लगइन और डेस्कटॉप एडिटर तीन नामों वाले तीन पैकेज हैं, और प्लगइन का एक GTK रूप है जिसका नाम डिस्ट्रीब्यूशन के अनुसार बदलता है। apt-cache search --names-only openvpn विवरणों के बजाय नामों और दिए गए नामों का मिलान करता है, और जब आप मोटे तौर पर जानते हैं कि उस चीज़ का नाम क्या है तब यही चाहते हैं।

यदि नाम वास्तव में अज्ञात है, तो एक बार विवरणों में खोजें, फिर सटीक नामों पर लौटें। दूसरे डिस्ट्रीब्यूशन से उधार लिया -gui प्रत्यय जोड़कर यह निष्कर्ष न निकालें कि पैकेज अब मौजूद नहीं है।

स्रोत अंत में बदलें, फिर लेनदेन सत्यापित करें

रिपॉज़िटरी जोड़ना बदलता है कि आपके अपडेट कौन देता है, इसलिए यह जाँच के अंत में आता है, शुरुआत में नहीं।

उससे पहले release, आर्किटेक्चर, घटक और पिन स्थिति की पुष्टि करें। लिख लें कि चारों में से कौन-कौन जाँचे, ताकि अगला व्यक्ति पूरी झाड़ू दोबारा न करे। यदि चारों सही हैं और उम्मीदवार अब भी गायब है, तो ईमानदार निष्कर्ष यह है कि यह संस्करण वह पैकेज नहीं भेजता। शेष विकल्प backport, विक्रेता पैकेज या दूसरा समर्थित संस्करण हैं, और इनमें से हर एक अनुमान नहीं, सुविचारित चुनाव है।

जब उम्मीदवार दिखे, तो लागू करने से पहले अनुकरण करें: पैकेज के नाम के साथ apt-get install --simulate दिखाता है कि क्या खींचा जाएगा और क्या हटाया जाएगा। पैकेज की उपलब्धता, इंस्टॉलेशन और कार्यशील टनल तीन अलग चरण रहते हैं, और टनल को ट्रैफ़िक ले जाने से पहले अब भी अपनी प्रोफ़ाइल, क्रेडेंशियल, रूट और DNS चाहिए।

संबंधित लेख