nordvpn कहता है कि डेमन तक नहीं पहुँचा जा सकता: सॉकेट, समूह या unit?
टनल पूरी तरह ठीक हो सकती है; CLI ने बस nordvpnd तक अपना सॉकेट खो दिया है। कमांड से unit तक, फिर सॉकेट की अनुमतियों तक जाएँ, और पहली विफलता पर रुकें।
nordvpn चलाना और अनुपलब्ध डेमन के बारे में संदेश मिलना एक सँकरी शिकायत है, जो आमतौर पर तब आती है जब आप पहले ही देर कर चुके होते हैं। यह इस बारे में कुछ नहीं कहती कि टनल काम कर रही है या नहीं, क्योंकि CLI केवल अगला हिस्सा है: वह Unix सॉकेट के ज़रिये पृष्ठभूमि प्रक्रिया से बात करता है, और संदेश का अर्थ है कि वह बातचीत नहीं हुई। कमांड से बाहर की ओर बढ़ें और पहली उस चीज़ पर रुकें जो झूठी निकले।
जहाँ त्रुटि दिखती है वहीं से शुरू करें
इसमें दो प्रक्रियाएँ शामिल हैं, और उन्हें आपस में मिला देना ही इसे रहस्यमय बनाता है। डेमन टनल का मालिक है और /run/nordvpn/ के नीचे एक सॉकेट पर सुनता है। आपने जो कमांड लिखा, वह स्वयं इंटरफ़ेस छुए बिना उसी सॉकेट से जुड़ता है।
जब सॉकेट अनुपस्थित हो या कनेक्शन से इंकार करे, तो CLI के पास पूछने वाला कोई नहीं होता, इसलिए वह उसी शिकायत का उपयोगकर्ता-डेमन या सिस्टम-डेमन रूप बताता है। उन रूपों में से एक सीधे पथ का नाम लेता है, और वही पूरी बातचीत का सबसे उपयोगी वाक्य है।
बाकी सब से पहले unit जाँचें
सेवा प्रबंधक से पूछें कि डेमन चल रहा है या नहीं, और न चल रहा हो तो एक ही चरण में उसे शुरू और सक्षम करें:
systemctl status nordvpnd
sudo systemctl enable --now nordvpnd
nordvpn version
यदि unit मौजूद है पर निष्क्रिय है, तो enable --now एक साथ उसे शुरू करता है और अगले बूट की व्यवस्था करता है। यदि unit मौजूद नहीं है, तो पैकेज वह नहीं है जो आप मान रहे हैं, और स्थापित नाम आपके नोट्स के नाम से अधिक मायने रखता है। यह तब तक एक सूक्ष्म भेद लगता है जब तक आप ऐसी सेवा को सक्षम करने में बीस मिनट नहीं गँवा देते जो उस लेबल के अंतर्गत कभी स्थापित ही नहीं हुई। जो मौजूद है उसे पढ़ें, फिर उसी के अनुसार कार्य करें।
unit फ़ाइलों की सूची एक ही कमांड में यह तय कर देती है, और स्थापना के बारे में कुछ भी निष्कर्ष निकालने से पहले यह करना उचित है:
systemctl list-unit-files 'nordvpn*'
service --status-all
रिलीज़ ने सेवा को एक से अधिक unit नामों के अंतर्गत भेजा है, इसलिए जो बिल्ड nordvpn के बजाय nordvpnd का उपयोग करता है, वह इस त्रुटि की पूरी नकल बनाएगा जबकि ठीक बगल में एक स्वस्थ सेवा चल रही होगी।
सॉकेट और उसका समूह पहुँच तय करते हैं
डेमन चालू होने पर भी अनुमतियों के कारण कनेक्शन अस्वीकार हो सकता है। इंस्टॉलर nordvpn समूह बनाता है, और सॉकेट उसी के अनुसार स्वामित्व में होता है, इसलिए उस समूह से बाहर का उपयोगकर्ता अस्वीकार हो जाता है जबकि सेवा पूरी तरह स्वस्थ है।
sudo usermod -aG nordvpn "$USER"
newgrp nordvpn
समूह सदस्यता सत्र शुरू होने पर पढ़ी जाती है, इसीलिए जिस टर्मिनल में आपने बदलाव किया वहाँ वह काम न करता दिखता है। चल रहे सत्र को नया समूह दिखने से पहले नया लॉगिन शेल या newgrp आवश्यक है। नए शेल में जाँचें, उस शेल में नहीं जिसने अभी कमांड चलाया। वरना आप निष्कर्ष निकालेंगे कि सुधार विफल हुआ, जबकि वह अभी लागू ही नहीं हुआ है।
सॉकेट का स्वामित्व स्वयं उस जाँच का दूसरा आधा हिस्सा है। सॉकेट पर बने समूह की तुलना उस शेल में बताए गए समूहों से करें जो CLI चला रहा है, और अनुमति का प्रश्न दोबारा इंस्टॉल करने के बजाय एक ही चरण में उत्तर पा जाता है:
ls -l /run/nordvpn
id
चलती हुई प्रक्रिया सही सॉकेट का प्रमाण नहीं है। किसी दूसरे प्रबंधक द्वारा शुरू किया गया डेमन, या अलग नाम का सॉकेट बाँधने वाला पुराना पैकेज, एक जैसा ही रिपोर्ट करते हैं। निर्देशिका की सूची उन स्थितियों को एक पंक्ति में अलग कर देती है, इसलिए वह दोबारा इंस्टॉल करने से बेहतर है।
पुराने पैकेजिंग में प्रति-उपयोगकर्ता प्रक्रिया
कुछ पैकेजिंग लॉग इन किए उपयोगकर्ता के संदर्भ में दूसरी प्रक्रिया चलाती हैं, जिसे डेस्कटॉप एकीकरण ढूँढने की अपेक्षा रखता है। यदि सिस्टम init स्क्रिप्ट उसे उस खाते में उतरे बिना शुरू करती है, तो CLI ऐसे डेमन को खोजता है जिसका कोई सत्र मालिक नहीं है।
systemd रहित init पर प्रलेखित व्यवस्था भूमिकाएँ बाँटती है: सिस्टम सेवा एक नाम के अंतर्गत चलती है और उपयोगकर्ता-पक्ष प्रक्रिया लक्ष्य खाते के अंतर्गत chpst -u <user> के साथ चलती है। दूसरी व्यवस्था मान लेने वाली स्टार्टअप स्क्रिप्ट जोड़ने से पहले जाँचें कि आपकी स्थापना वास्तव में कौन-सी व्यवस्था प्रयोग करती है।
कैसे जानें कि आपका काम पूरा हुआ
अपग्रेड सामान्य ट्रिगर है, क्योंकि नई बाइनरी ऐसी सेवा-स्थिति की अपेक्षा करती है जो पुरानी ने कभी नहीं छोड़ी। रोकना, फिर से सक्षम करना और शुरू करना इसी क्रम में उसे साफ़ कर देता है:
sudo systemctl stop nordvpnd
sudo systemctl enable --now nordvpnd
sudo systemctl start nordvpnd
nordvpn version
वह अंतिम कमांड स्वीकृति परीक्षण है। संस्करण छपना यानी सॉकेट उत्तर दे रहा है, जो हर बची हुई खराबी को लॉगिन, प्लान या कनेक्टिविटी के दायरे में ले जाता है और इस लेख से बाहर कर देता है। यदि वह उत्तर दे, तो यहाँ पढ़ना बंद करें और इसके बजाय खाते को देखें।
यदि सॉकेट अब भी अनुपस्थित है, तो यह देखने के लिए कि वह क्यों बंद हुआ unit जर्नल पढ़ें, फिर जाँचें कि /run/nordvpn मौजूद है और सेवा खाता वहाँ लिख सकता है। जो प्रक्रिया उठती है और तुरंत मर जाती है, वह अपना कारण उसी जर्नल में दर्ज करती है, और एक पंक्ति पढ़ना दोबारा इंस्टॉल करने से तेज़ है।