ინსტალაცია მთავრდება, brew ამბობს, რომ openvpn არსებობს, ხოლო shell პასუხობს command not found. ბინარი არსებობს, უბრალოდ იმ საქაღალდეში ზის, რომლის შესახებაც shell-ს არასდროს უთქვამთ. Homebrew დემონური ტიპის ბინარებს პრეფიქსის sbin საქაღალდეში აკავშირებს, ხოლო macOS-ის ნაგულისხმევი PATH ჩვეულებრივ მოიცავს bin საქაღალდეს და არა sbin-ს. არაფერი არ არის გატეხილი და არც ერთი ხელახალი ინსტალაცია ამას არ შეცვლის.

ოთხი შემოწმება ადასტურებს მექანიზმს სანამ shell-ის რომელიმე ფაილს შეცვლით.

რას აყენებს სინამდვილეში ფორმულა

openvpn-ის ფორმულა ბრძანების ხაზის დემონს აშენებს, ამიტომ მისი შესრულებადი ფაილი bin-ის ნაცვლად sbin-ის ქვეშ ხვდება. შემდეგ Homebrew ამ ბინარს პრეფიქსის sbin საქაღალდეში აკავშირებს და სწორედ ამიტომ მუშაობს "$(brew --prefix)/sbin/openvpn" --version, მაშინ როცა შიშველი გამოძახება არ მუშაობს. ვერსიიანი Cellar საქაღალდე ასევე ინახავს ასლს და ამ გზის გაშვების ფაილში ჩაწერა არის ის გზა, რომლითაც მანქანა განახლების შემდეგ ძველ აწყობაზე რჩება მიბმული.

პრეფიქსის სიმბოლური ბმული სტაბილური გზაა. Cellar-ის გზა იმპლემენტაციის დეტალია, შიგნით ვერსიის ნომრით.

ჰკითხეთ Homebrew-ს და არა ფაილურ სისტემას

დაიწყეთ პაკეტების მმართველით, რადგან მან იცის რომელი ინსტალაცია ფლობს ფორმულას: command -v brew, brew --prefix, brew list --versions openvpn, brew --prefix openvpn. თუ უკანასკნელი ბეჭდავს გზას, ფორმულა არსებობს და საკითხი მხოლოდ გადაწყვეტას ეხება. თუ ის არაფერს ბეჭდავს, shell არასწორ ადგილას ეძებს არასდროს დაყენებულ პაკეტს და ეს სხვა პრობლემაა სხვა გამოსწორებით.

ერთ მანქანაზე ორი Homebrew ინსტალაცია ის ადგილია, სადაც ეს ყველაზე მეტად მნიშვნელოვანია: პასუხისმგებელი brew სულაც არ არის ის brew, რომელმაც დააყენა.

რატომ ვერ ხედავს shell sbin-ს

შესვლის shell PATH-ს აშენებს სისტემის ნაგულისხმევებიდან და იმ ყველაფრიდან, რასაც თქვენი გაშვების ფაილები ამატებს. Homebrew bin ჩვეულებრივ ემატება, Homebrew sbin კი ჩვეულებრივ არა, ამიტომ ყველა ბრძანება მუშაობს დემონების გარდა. command -v openvpn რომელიც არაფერს აბრუნებს, მაშინ როცა პრეფიქსიანი გზა ვერსიას აბრუნებს, მთელი დიაგნოზია ორ ბრძანებაში. დაადასტურეთ, რომ საქაღალდე ნამდვილად შეიცავს ბმულს ls -l "$(brew --prefix)/sbin/openvpn"-ით.

დაკარგული ბმული სხვა გაუმართაობაა, ვიდრე დაკარგული PATH ჩანაწერი და მათგან მხოლოდ ერთი სწორდება shell-ის ფაილის რედაქტირებით.

გაასწორეთ გზა ერთხელ, ერთ ადგილას

მიმდინარე shell-ში სწრაფი ტესტისთვის eval "$(brew shellenv)" აყენებს ინსტალაციის ცვლადებს და ორივე საქაღალდეს წინ აყენებს. მუდმივი მოწყობისთვის shellenv-ის ხაზი ჩაწერეთ იმ ერთადერთ გაშვების ფაილში, რომელსაც თქვენი shell თქვენს მიერ გამოყენებული შესვლის რეჟიმისთვის კითხულობს, export-ების bash და zsh ფაილებზე გაფანტვის ნაცვლად.

შემდეგ გახსენით ახალი ტერმინალი და გაიმეორეთ ვერსიის მოთხოვნა, რადგან ქეშირებული shell კვლავ ძველ PATH-ს იუწყება.

აღმოჩენა სამსახურისგან ცალკე გქონდეთ

ბინარის პოვნა არ არის იგივე, რაც VPN სამსახურის გაშვება. openvpn-ის ავტომატური გაშვება ამატებს პროფილის, სერტიფიკატების, უფლებებისა და სასიცოცხლო ციკლის მოთხოვნებს, რომლებსაც პაკეტების აღმოჩენა არასდროს შეხებია. Tunnelblick თავის ძრავასაც მოაქვს, ამიტომ ახლახან დაბეჭდილ ვერსიას შეიძლება არაფერი ჰქონდეს საერთო იმ ვერსიასთან, რომელსაც აპლიკაცია იყენებს.

ჩაწერეთ, რომელმა შესრულებადმა ფაილმა წარმოქმნა ვერსიის გამოტანა. ის ერთი ხაზი ზოგავს საათს შემდეგ ჯერზე, როცა ორი ვერსია არ დაეთანხმება.

დაკავშირებული სტატიები