nordvpn ამბობს, რომ დემონამდე მიღწევა შეუძლებელია: socket, ჯგუფი თუ unit?
გვირაბი შეიძლება სრულიად კარგად იყოს; CLI-მ უბრალოდ დაკარგა თავისი socket nordvpnd-მდე. გაიარეთ ბრძანებიდან unit-მდე, შემდეგ socket-ის ნებართვებამდე, და გაჩერდით პირველ მარცხზე.
nordvpn-ის გაშვება და მიუწვდომელი დემონის შესახებ შეტყობინების მიღება ვიწრო ჩივილია, რომელიც ჩვეულებრივ მაშინ მოდის, როცა უკვე დაგვიანებული ხართ. ის არაფერს ამბობს იმაზე, მუშაობს თუ არა გვირაბი, რადგან CLI მხოლოდ წინა ნაწილია: ის ფონურ პროცესს Unix socket-ის მეშვეობით ესაუბრება, და შეტყობინება ნიშნავს, რომ ეს საუბარი არ შედგა. წადით ბრძანებიდან გარეთ და გაჩერდით პირველ იმაზე, რაც მცდარი აღმოჩნდება.
დაიწყეთ იქ, სადაც შეცდომა ჩნდება
აქ ორი პროცესი მონაწილეობს და სწორედ მათი არევა ხდის ამას იდუმალს. დემონი ფლობს გვირაბს და უსმენს socket-ს /run/nordvpn/-ის ქვეშ. თქვენ მიერ აკრეფილი ბრძანება სწორედ ამ socket-ს უკავშირდება, ნაცვლად იმისა რომ თავად შეეხოს ინტერფეისებს.
როცა socket არ არსებობს ან კავშირს უარყოფს, 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 სახელით მოგვაწოდეს, ამიტომ build, რომელიც იყენებს nordvpn-ს და არა nordvpnd-ს, ამ შეცდომის სრულყოფილ ასლს შექმნის, მაშინ როცა ჯანსაღი სერვისი ზუსტად გვერდით მუშაობს.
socket და მისი ჯგუფი წყვეტენ წვდომას
მუშა დემონის პირობებშიც კი კავშირი შეიძლება უარყოფილ იქნას ნებართვების გამო. ინსტალატორი ქმნის ჯგუფს nordvpn, და socket შესაბამისად არის დაკუთრებული, ამიტომ ამ ჯგუფის გარეთ მყოფი მომხმარებელი უარყოფილია, მაშინ როცა სერვისი სრულიად ჯანსაღია.
sudo usermod -aG nordvpn "$USER"
newgrp nordvpn
ჯგუფის წევრობა იკითხება სესიის დაწყებისას, ამიტომ ცვლილება თითქოს არ მუშაობს იმ ტერმინალში, სადაც თქვენ გააკეთეთ. საჭიროა ახალი შესვლის shell ან newgrp სანამ მოქმედი სესია ახალ ჯგუფს დაინახავს. გამოსცადეთ ახალ shell-ში და არა იმაში, რომელმაც ახლახან შეასრულა ბრძანება. წინააღმდეგ შემთხვევაში დაასკვნით, რომ გასწორება ჩავარდა, მაშინ როცა ის უბრალოდ ჯერ არ არის გამოყენებული.
თავად socket-ის საკუთრება ამ შემოწმების მეორე ნახევარია. შეადარეთ socket-ზე არსებული ჯგუფი იმ ჯგუფებს, რომლებსაც CLI-ის გაშვებული shell იტყობინებს, და ნებართვის კითხვა ერთ ნაბიჯში წყდება, ხელახალი ინსტალაციის ნაცვლად:
ls -l /run/nordvpn
id
ცოცხალი პროცესი სწორი socket-ის მტკიცებულება არ არის. სხვა მენეჯერის მიერ გაშვებული დემონი ან ძველი პაკეტი, რომელმაც განსხვავებული სახელის socket შეკრა, ერთნაირად იტყობინებიან. დირექტორიის ჩამონათვალი ამ შემთხვევებს ერთ ხაზში არჩევს, ამიტომ ის ჯობია ხელახალ ინსტალაციას.
მომხმარებლის პროცესი ძველ პაკეტირებაში
ზოგი პაკეტირება მეორე პროცესს უშვებს შესული მომხმარებლის კონტექსტში, რომლის პოვნასაც სამაგიდო ინტეგრაცია ელის. თუ სისტემის init სკრიპტი მას ამ ანგარიშზე გადასვლის გარეშე უშვებს, CLI ეძებს დემონს, რომელსაც არც ერთი სესია არ ფლობს.
არა-systemd init-ზე დოკუმენტირებული განლაგება როლებს ყოფს: სისტემური სერვისი ერთი სახელით მუშაობს, ხოლო მომხმარებლის მხარის პროცესი სამიზნე ანგარიშის ქვეშ chpst -u <user>-ით მუშაობს. შეამოწმეთ, რომელ განლაგებას იყენებს თქვენი ინსტალაცია რეალურად, სანამ დაამატებთ გაშვების სკრიპტს, რომელიც მეორეს ვარაუდობს.
როგორ გაიგოთ, რომ დასრულდით
ჩვეულებრივი გამომწვევი განახლებაა, რადგან ახალი ბინარული ელოდება სერვისის მდგომარეობას, რომელიც ძველმა არასოდეს დატოვა. შეჩერება, ხელახლა ჩართვა და გაშვება ამ თანმიმდევრობით ასუფთავებს მას:
sudo systemctl stop nordvpnd
sudo systemctl enable --now nordvpnd
sudo systemctl start nordvpnd
nordvpn version
ეს უკანასკნელი ბრძანება მიღების ტესტია. დაბეჭდილი ვერსია ნიშნავს, რომ socket პასუხობს, რაც ყოველ დარჩენილ ხარვეზს გადააქვს შესვლის, გეგმის ან კავშირის არეალში და გამოჰყავს ამ სტატიიდან. თუ ის პასუხობს, შეწყვიტეთ აქ კითხვა და სამაგიეროდ შეხედეთ ანგარიშს.
თუ socket კვლავ არ არსებობს, წაიკითხეთ unit-ის ჟურნალი, რომ ნახოთ, რატომ შეწყვიტა, შემდეგ შეამოწმეთ, რომ /run/nordvpn არსებობს და სერვისის ანგარიშს შეუძლია იქ წერა. პროცესი, რომელიც ადის და მაშინვე კვდება, თავის მიზეზს იმ ჟურნალში იწერს, და ერთი ხაზის წაკითხვა უფრო სწრაფია, ვიდრე ხელახალი ინსტალაციის შესრულება.