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