वेबसाइटें VPN से लोड होती हैं, पर apt रिपॉज़िटरी तक नहीं पहुँचता
VPN से चलने वाला ब्राउज़र apt की प्रॉक्सी सेटिंग्स के बारे में कुछ नहीं बताता। जो चरण विफल हो रहा है उसे पढ़ें, प्रभावी कॉन्फ़िगरेशन डंप करें, फिर वह प्रॉक्सी सेट करें जिसे apt पढ़ता है।
VPN जुड़ जाता है, आंतरिक विकी ब्राउज़र में लोड हो जाती है, और apt update अब भी उस मिरर पर अटका रहता है जहाँ वह पहुँच नहीं पाता। उस तस्वीर में सुरंग में कुछ भी टूटा नहीं है। ब्राउज़र और पैकेज मैनेजर ने प्रॉक्सी के दो अलग-अलग फ़ैसले लिए, और उनमें से सिर्फ़ एक कॉन्फ़िगर किया गया था।
कौन-सा फ़ैसला विफल हुआ, यही पहले तय करने लायक एकमात्र बात है।
सेटिंग छूने से पहले त्रुटि पढ़ें
हर चरण अलग संदेश छोड़ता है। जो नाम कभी हल नहीं होता वह DNS है, जो कनेक्शन कभी पूरा नहीं होता वह रूटिंग या फ़ायरवॉल है, तुरंत मिला 407 प्रॉक्सी प्रमाणीकरण है, प्रमाणपत्र की शिकायत TLS सत्यापन है, और हस्ताक्षर की चेतावनी रिपॉज़िटरी मेटाडेटा है। इन पाँच विफलताओं के लिए पाँच अलग सुधार चाहिए, और DNS समस्या पर चिपकाई गई प्रॉक्सी पंक्ति सिर्फ़ अटकाव को आगे बढ़ाती है।
कुछ भी बदलने से पहले वह सटीक पंक्ति और वह रिपॉज़िटरी कॉपी करें जिसका वह नाम लेती है। „समय समाप्त हो गया“ जैसी धुँधली याद ही दस मिनट के निदान को पूरी दोपहर में बदल देती है।
APT अपनी अलग प्रॉक्सी सेटिंग्स रखता है
APT /etc/apt/apt.conf.d/, मुख्य apt.conf और APT_CONFIG द्वारा नामित हर फ़ाइल पढ़ता है। यह डेस्कटॉप प्रॉक्सी प्रोफ़ाइल, GNOME नेटवर्क सेटिंग या ब्राउज़र एक्सटेंशन नहीं पढ़ता। ट्रांसपोर्ट प्रॉक्सी पर्यावरण चर का पालन करता है, इसलिए आपके शेल में काम करता export https_proxy=... किसी दूसरे वातावरण में चलने वाले टाइमर के बारे में कुछ साबित नहीं करता।
विफल हो रही प्रक्रिया वास्तव में क्या देखती है, वह डंप करें: apt-config dump | grep -i proxy।
इसे उसी उपयोगकर्ता के रूप में चलाएँ जिसके अंतर्गत विफल क्रिया चलती है। अगर root कोई और फ़ाइल-समुच्चय पढ़ता है, या systemd टाइमर किसी और वातावरण के साथ शुरू होता है, तो डंप अलग होगा, और वही अंतर आपका उत्तर है। दो परस्पर-विरोधी प्रॉक्सी मान एक गायब मान से बुरे हैं, क्योंकि ट्रांसपोर्ट सबसे विशिष्ट मिलान का पालन करता है जो उसे मिलता है।
प्रॉक्सी वहाँ सेट करें जहाँ कॉन्फ़िगरेशन का मालिक उसे चाहता है
व्यवस्थापक द्वारा स्वीकृत स्पष्ट प्रॉक्सी के लिए नई फ़ाइल में एक छोटा टुकड़ा काफ़ी है:
Acquire::http::Proxy "http://proxy.corp.example:3128/";
Acquire::https::Proxy "http://proxy.corp.example:3128/";
Acquire::http::Proxy::archive.example.internal "DIRECT";तीसरी पंक्ति वह हिस्सा है जिसे ज़्यादातर उदाहरण छोड़ देते हैं। प्रति-होस्ट कुंजी सामान्य मान को ओवरराइड करती है, इसलिए सुरंग से पहुँचने वाला आंतरिक मिरर प्रॉक्सी को छोड़ सकता है जबकि बाकी सब अब भी उसी से गुज़रता है। DIRECT इसके लिए प्रलेखित मान है, खाली स्ट्रिंग नहीं।
टुकड़े को नई क्रमांकित फ़ाइल के रूप में जोड़ें, जैसे /etc/apt/apt.conf.d/95proxy। वितरण की फ़ाइल को ओवरराइट करने का अर्थ है कि अगला पैकेज अपडेट आपका बदलाव चुपचाप वापस लौटा देगा।
क्रेडेंशियल URI से बाहर रहते हैं
APT ट्रांसपोर्ट संदर्भ प्रमाणीकरण के लिए apt_auth.conf की ओर इशारा करता है, और उपयोगकर्ता नाम व पासवर्ड वहीं जाते हैं। उन्हें प्रॉक्सी URI में एम्बेड करने से वे प्रक्रिया सूचियों, शेल इतिहास और टिकट में चिपकाए गए हर कॉन्फ़िगरेशन डंप में पहुँच जाते हैं। प्रमाणीकरण फ़ाइल को सख़्त अनुमतियाँ चाहिए, क्योंकि वह क्रेडेंशियल भंडार है।
स्कीम भी जाँचें। HTTPS रिपॉज़िटरी तक अब भी HTTP प्रॉक्सी से पहुँचा जा सकता है; ट्रांसपोर्ट मिरर की URI स्कीम से अलग चुनाव है।
ग्राफ़िकल सॉफ़्टवेयर सेंटर अलग फ़्रंट एंड है। अगर वह PackageKit या snap बैकएंड इस्तेमाल करता है, तो APT का टुकड़ा उसके लिए कुछ नहीं बदलता, इसलिए पुष्टि करें कि विफल अनुरोध किस प्रक्रिया ने किया।
पथ की पुष्टि करें, सिर्फ़ निकास कोड की नहीं
टुकड़ा लगने के बाद हरे परिणाम पर भरोसा करने के बजाय अनुरोध को देखें। apt-get -o Debug::Acquire::http=true update कनेक्शन का प्रयास, चुनी गई प्रॉक्सी और प्रतिक्रिया कोड छापता है, जो ग़लत प्रॉक्सी को उस प्रॉक्सी से अलग करता है जिसने आपको अस्वीकार किया।
फिर वह स्थिति जाँचें जो काम नहीं करनी चाहिए। VPN काटें और पुष्टि करें कि आंतरिक मिरर जवाब देना बंद कर देता है; अगर वह अब भी डाउनलोड करता है, तो कुछ सुरंग के बग़ल से रूट कर रहा है या पुराना कैश आपको सेवा दे रहा है। पुष्टि करें कि अनुमत पथ अब भी TLS सत्यापित करता है और अब भी रिपॉज़िटरी हस्ताक्षर जाँचता है, क्योंकि ट्रैफ़िक की जाँच करने वाली प्रॉक्सी इनमें से किसी को भी बंद करने का कारण नहीं है। यह भी पुष्टि करें कि अपुष्ट क्लाइंट को चुपचाप समय-समाप्ति के बजाय स्पष्ट इनकार मिलता है।
चालू टुकड़ा और विफल आउटपुट को बदलाव रिकॉर्ड में साथ रखें। अगली बार वही अटकाव झेलने वाला व्यक्ति दो पंक्तियों का अंतर किसी भी व्याख्या से तेज़ पहचान लेगा।