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

Առնչվող հոդվածներ