Три различни неизправности носят едно и също съобщение за грешка на 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 да премахне и потребителските предпочитания и споделените ресурси, а документацията предупреждава, че това може да засегне друг софтуер. В cask OpenVPN Connect секцията 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, когато приемете цената за идентификационните данни, ръчно изтриване — никога.

Подобни статии