ความผิดพลาดสามแบบใช้ข้อความแสดงข้อผิดพลาดของ 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 เมื่อคุณยอมรับค่าใช้จ่ายของข้อมูลรับรอง และไม่ลบด้วยมือเลย

บทความที่เกี่ยวข้อง