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՝ երբ ընդունում եք մուտքային տվյալների գինը, ձեռքով ջնջում՝ երբեք։