Homebrew OpenVPN Connect-ს ვერ შლის: რომელი გზაა შესაფერისი?
cask-ის წარუმატებელი წაშლა სამი ხარვეზიდან ერთია. წაიკითხეთ cask-ის არტეფაქტები, შეადარეთ ვერსიები, შემდეგ აირჩიეთ ხელახლა ცდა, განახლება ან zap.
სამი განსხვავებული ხარვეზი ერთსა და იმავე cask-ის შეცდომის შეტყობინებას ატარებს და თითოეულს საკუთარი აღდგენის გზა აქვს. შეიძლება მომწოდებლის წამშლელი არ იყოს დაყენებულ ვერსიაში, დამხმარე პროცესი ჯერ კიდევ მუშაობდეს და თავის ფაილებს უჭირავდეს, ან პაკეტის ქვითარი არ ემთხვეოდეს დისკზე არსებულს. ძველი ფორუმული ხრიკი, რომელმაც ამ შემთხვევებიდან ერთი იხსნა, არაფერს გეუბნებათ იმაზე, რომელი გაქვთ. cask-ის საკუთარი ჩანაწერის წაკითხვაა გზა ამის გასარკვევად.
სამი მსგავსად წარმოსადგენი ხარვეზი
დაკარგული წამშლელი იჩენს თავს როგორც ბილიკი, რომელიც არ არსებობს, როცა cask მის გაშვებას ცდილობს. მომუშავე დამხმარე პროცესი იჩენს თავს როგორც წაშლა, რომელიც იწყება და შემდეგ ჩერდება, ან როგორც აპლიკაცია, რომელიც დახურვის შემდეგ ისევ ჩნდება. მოძველებული ქვითარი იჩენს თავს მაშინ, როცა cask-ის საკუთარი ჩანაწერი და ინსტალატორის მონაცემთა ბაზა არ თანხმდებიან იმაზე, საერთოდ დაყენებულია თუ არა პროდუქტი.
შეინახეთ პირველი შეცდომის ტექსტი, სანამ რამეს ხელახლა სცდით. მეორე ცდა გადაწერს იმ მდგომარეობას, რომელმაც შეტყობინება წარმოქმნა, და სწორედ ორიგინალური ხაზი სჭირდება მომვლელს ან მომწოდებელს ამ შემთხვევების გასარჩევად. დააკოპირეთ იქ, სადაც გადაურჩება ხელახალ ცდას.
თუ ეს VPN ატარებს იმ კავშირს, რომლითაც მუშაობთ, ჯერ სხვა ადმინისტრირების გზა მოამზადეთ. თქვენი წვდომის მიმწოდებელი კლიენტის მოხსნა ტექნიკური მომსახურების ფანჯრის გადაწყვეტილებაა და არა Homebrew-ის. სწორედ ეს თანმიმდევრობა ხდის წარუმატებელ წაშლას აღდგენადს და არა საბოლოოს.
წაიკითხეთ, რა დააყენა cask-მა სინამდვილეში
Homebrew-ის საკუთარი ხედვა ყველაზე იაფი ხელმისაწვდომი მტკიცებულებაა და არაფერს ცვლის:
brew info --cask openvpn-connect
brew list --cask openvpn-connectპირველი ბრძანება ბეჭდავს cask-ის მეტამონაცემებს და იმ არტეფაქტებს, რომლებსაც ის მართავს; მეორე ჩამოთვლის იმას, რაც დაყენებულად არის აღრიცხული. არც ერთი არ ამტკიცებს, რომ მანქანაზე ყოველი დამხმარე პროცესი მიმდინარე რეცეპტს შეესაბამება, და სწორედ ამიტომ შეიძლება ძველი ინსტალაცია ისე ჩავარდეს, როგორც მიმდინარე cask-ის წყარო არ აღწერს. მოეპყარით ორ გამოსავალს როგორც შესამოწმებელ მტკიცებას და არა როგორც საბოლოო სიტყვას იმაზე, რაც არსებობს.
სანამ გზას აირჩევთ, შეადარეთ აღრიცხული ვერსია თავად აპლიკაციის ვერსიას. შეუსაბამობა ხსნის დაკარგულ წამშლელს უფრო ღრმა ხარვეზის გარეშე, და პასუხია განახლება იმ ვერსიაზე, რომელსაც cask ელოდება და არა ხელით გაწმენდა.
რას ამატებს zap და რა ღირს
cask-ის წაშლის სტროფა უმკლავდება იმ არტეფაქტებს, რომლებსაც რეცეპტი აცხადებს: აპლიკაციის დახურვა, გაშვების დავალებების განტვირთვა, შესვლის ელემენტის წაშლა, პაკეტის ქვითრების დავიწყება და აპლიკაციის პაკეტის წაშლა. ეს ჩვეულებრივი გზაა და სწორედ მან უნდა იმუშაოს.
--zap სხვა მოთხოვნაა. ის Homebrew-ს სთხოვს მომხმარებლის პარამეტრებისა და საერთო რესურსების წაშლასაც, და დოკუმენტაცია აფრთხილებს, რომ ამან შეიძლება სხვა პროგრამულ უზრუნველყოფაზე იმოქმედოს. OpenVPN Connect-ის cask-ში zap-ის სტროფა შლის openvpn.keychain-db-ს და ასუფთავებს მომხმარებლის აპლიკაციების მხარდაჭერის მონაცემებს, რაც ნიშნავს, რომ შენახული სამეურვეო მონაცემები და კავშირის პროფილები მასთან ერთად მიდის. თუ პროფილი ორგანიზაციიდან მოდის, დაადასტურეთ, რომ ხელახლა დარეგისტრირება შეგიძლიათ, სანამ ამ გზას აირჩევთ.
| Condition | Path that fits | Path to avoid |
|---|---|---|
| Uninstaller path missing after an OS upgrade | Upgrade the cask to the version matching the app | Hand-writing a replacement script |
| Helper still running during removal | Quit the app and its menu agent, then retry | Deleting the bundle while the helper runs |
| Receipt exists but files are gone | Forget the receipt with the cask's own tooling | Recursive deletion of the Caskroom entry |
| You need the machine clean and can re-enroll | Zap, after reading the stanza | Zap on a machine whose profiles you cannot rebuild |
გზები, რომლებიც გადამწყვეტად გვეჩვენება და ასე არ არის
ნულოვანი გასვლის კოდით დამთავრებული ყალბი remove.sh-ის დაწერა სიაში ყველაზე ცუდი ვარიანტია. ის აიძულებს წაშლას წარმატება მოახსენოს, მაშინ როცა გაშვების დავალებები, ქვითრები და აპლიკაციის მონაცემები ადგილზე რჩება, ამიტომ შემდეგი ინსტალაცია ნახევრად წაშლილ პროდუქტს და საპირისპიროს მამტკიცებელ ჩანაწერს მემკვიდრეობით იღებს.
Caskroom-ის დირექტორიის ან აპლიკაციის პაკეტის ხელით წაშლა მსგავს მდგომარეობას ქმნის მეორე მხრიდან. ფაილები ქრება, ქვითარი რჩება. შემდეგ ყოველი მომდევნო ბრძანება უნდა განვიხილოთ იმ მანქანის წინააღმდეგ, რომელიც აღარ ემთხვევა საკუთარ მონაცემთა ბაზას.
მთელი რეპოზიტორიის მასშტაბით brew update-reset უფრო დიდი ჩარევაა, ვიდრე ერთი წარუმატებელი cask ამართლებს. ის ცვლის თქვენი tap-ის მდგომარეობას იმ პრობლემის გამოსასწორებლად, რომელიც არასდროს ყოფილა tap-ის მდგომარეობაზე, და შეიძლება დაგტოვოთ იმ Homebrew-ისგან განსხვავებულის გამართვაზე, რომლითაც დაიწყეთ.
გადაწყვეტა რიგითობით
იმუშავეთ რიგის მიხედვით: წაიკითხეთ cask-ის აღრიცხული არტეფაქტები, შეადარეთ ვერსიები, დახურეთ ყოველი მომუშავე კომპონენტი, ხელახლა სცადეთ ჩვეულებრივი წაშლა და მხოლოდ ამის შემდეგ განიხილეთ zap. თუ ჩვეულებრივი გზა კვლავ ჩავარდა, შეინახეთ შეცდომა და წაიღეთ cask-ის მომვლელებთან ან მომწოდებელთან ვერსიების ნომრებით.
Cask Cookbook ცხადად ამბობს, რომ პაკეტების ინსტალატორებს პროდუქტისთვის სპეციფიკური წაშლის ტექნიკები სჭირდებათ და რომ zap სურვილისამებრია და შეიძლება საერთო რესურსები წაშალოს. ეს ჩარჩო გადაწყვეტის წესია: ჯერ ჩვეულებრივი წაშლა, zap როცა სამეურვეო მონაცემების ფასს ეთანხმებით, ხელით წაშლა არასდროს.