სამი განსხვავებული ხარვეზი ერთსა და იმავე 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-ს და ასუფთავებს მომხმარებლის აპლიკაციების მხარდაჭერის მონაცემებს, რაც ნიშნავს, რომ შენახული სამეურვეო მონაცემები და კავშირის პროფილები მასთან ერთად მიდის. თუ პროფილი ორგანიზაციიდან მოდის, დაადასტურეთ, რომ ხელახლა დარეგისტრირება შეგიძლიათ, სანამ ამ გზას აირჩევთ.

ConditionPath that fitsPath to avoid
Uninstaller path missing after an OS upgradeUpgrade the cask to the version matching the appHand-writing a replacement script
Helper still running during removalQuit the app and its menu agent, then retryDeleting the bundle while the helper runs
Receipt exists but files are goneForget the receipt with the cask's own toolingRecursive deletion of the Caskroom entry
You need the machine clean and can re-enrollZap, after reading the stanzaZap 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 როცა სამეურვეო მონაცემების ფასს ეთანხმებით, ხელით წაშლა არასდროს.

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