การถอนการติดตั้งอาจหยุดกลางทางด้วยข้อผิดพลาดที่ระบุชื่อสคริปต์บำรุงรักษา ทำให้ VPN ถูกถอนออกเพียงครึ่งเดียว: ไฟล์การกำหนดค่ายังคงอยู่ บริการอาจยังทำงานอยู่ และตัวจัดการแพ็กเกจปฏิเสธที่จะดำเนินการต่อ การแก้ไขที่ชวนให้ทำตามในกระทู้ฟอรัมเก่าคือลบสคริปต์และบังคับให้ถอนออก วิธีนั้นรักษาอาการแต่ทิ้งขั้นตอนการทำความสะอาดที่ล้มเหลวไป อ่านขั้นตอนและสถานะแพ็กเกจก่อน

ขั้นตอนใดในวงจรชีวิตที่ล้มเหลวจริง

แพ็กเกจ Debian รัน preinst และ postinst เมื่อติดตั้ง และรัน prerm กับ postrm เมื่อถอนหรือล้างข้อมูลทั้งหมด โดยสถานะการออกของแต่ละสคริปต์เป็นตัวกำหนดการทำงานถัดไป ข้อผิดพลาดจาก prerm หมายความว่าการถอนหยุดก่อนที่ไฟล์ของแพ็กเกจจะถูกลบ ข้อผิดพลาดจาก postrm หมายความว่าการถอนเกิดขึ้นแล้วและการทำความสะอาดล้มเหลว สองกรณีนี้แตกต่างกันและมีแนวทางการกู้คืนที่ต่างกัน นโยบายของดิสทริบิวชันยังคาดหวังให้สคริปต์ทนต่อการรันซ้ำ เพราะขั้นตอนที่ล้มเหลวควรถูกทำซ้ำไม่ใช่หลีกเลี่ยง

บันทึกข้อผิดพลาดแรกไว้ตามต้นฉบับ พร้อมชื่อแพ็กเกจ เวอร์ชัน และรุ่นของดิสทริบิวชัน ข้อผิดพลาดที่ตามมามักเป็นผลสืบเนื่อง

อ่านสถานะแพ็กเกจก่อนเปลี่ยนแปลง

ถามตัวจัดการแพ็กเกจว่าคิดว่าเกิดอะไรขึ้นก่อนออกคำสั่งอื่น

dpkg -l vpn-package
dpkg --audit
apt-get -s remove vpn-package

รายการแสดงแฟล็กสถานะของแพ็กเกจ การตรวจสอบพบแพ็กเกจที่ถูกทิ้งไว้เสียหรือกำหนดค่าไว้เพียงครึ่ง และการถอนจำลองจะพิมพ์สิ่งที่ apt จะทำโดยไม่แตะต้องสิ่งใด การจำลองที่ล้มเหลวที่สคริปต์เดียวกันยืนยันขั้นตอน ไม่ใช่เครือข่าย สังเกตสคริปต์ที่ระบุในข้อผิดพลาดและแสดงรายการไฟล์ข้อมูลของแพ็กเกจหากต้องการดูว่ามีสคริปต์ใดอยู่ ไม่มีข้อใดในนี้ที่ทำให้การแก้ไขไฟล์เหล่านั้นชอบธรรมในตอนนี้

ปกป้องเส้นทางการจัดการก่อนการซ่อม

หาก VPN พาเซสชัน SSH เพียงเซสชันเดียวของคุณไปยังโฮสต์นี้ การถอนออกจะยุติการเข้าถึงของคุณกลางการซ่อม จัดเตรียมคอนโซล อินเทอร์เฟซการจัดการนอกแบนด์ หรือเส้นทางที่สองก่อน และยืนยันว่าใช้งานได้ก่อนเริ่ม เก็บโปรไฟล์และคำแนะนำการลงทะเบียนใหม่ที่ต้องใช้ภายหลัง เพราะการล้างข้อมูลทั้งหมดอาจลบการกำหนดค่าที่สร้างขึ้น เก็บข้อมูลรับรองไว้นอกบันทึกที่คุณวางในตั๋ว และเก็บคีย์ส่วนตัวออกจากการวินิจฉัยทั้งหมด

ถือว่าการแทนที่ด้วยมือที่มีเอกสารกำกับเป็นทางเลือกสุดท้ายภายใต้คำแนะนำของเจ้าของแพ็กเกจ โดยนับขั้นตอนที่ข้ามไปด้วย อย่าลบสคริปต์ด้วยไวลด์การ์ดเลย เพราะรายการทำความสะอาดของแพ็กเกจเองคือบันทึกสิ่งที่ยังต้องทำ

แยกผลลัพธ์ของแพ็กเกจ เครือข่าย และข้อมูลรับรอง

ต้องตรวจสอบผลลัพธ์สามอย่างแยกกันเมื่อขั้นตอนที่รองรับสิ้นสุดลง ธุรกรรมของแพ็กเกจควรแสดงสถานะที่สะอาด โดยไม่มีรายการที่กำหนดค่าไว้ครึ่งหนึ่งเหลืออยู่ในการตรวจสอบ เครือข่ายควรตรงกับสิ่งที่คุณตั้งใจ: บริการที่ถูกต้องหยุดแล้ว ไม่มีเส้นทางหรือการตั้งค่า DNS ที่ค้างอยู่ และมีเส้นทางที่ใช้งานได้สำหรับการแทนที่หรือการเข้าถึงโดยตรง ฝั่งปลายทางเป็นผลลัพธ์ที่สาม และข้อมูลรับรองที่ล้าสมัยควรถูกเพิกถอนผ่านเจ้าของบัญชีนั้น เพราะการถอนการติดตั้งไคลเอนต์ไม่ได้เพิกถอนสิ่งใด

จากนั้นเชื่อมต่อใหม่และทดสอบปลายทางหนึ่งที่ได้รับอนุญาต สถานะแพ็กเกจที่สะอาดพร้อมอุโมงค์ที่ยังทำงานอยู่เป็นผลลัพธ์ที่แตกต่างจากเครือข่ายที่สะอาด และมีเพียงอย่างที่สองเท่านั้นที่บอกคุณว่าการถอนมีผลจริง

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