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