โซลูชันของ Alex ช่วยระงับข้อผิดพลาดและเขาเกือบจะได้รับสาเหตุ แต่ไม่อนุญาตให้คุณตอบคำถามใด ๆ (ซึ่งใช้ได้เมื่อคุณคาดเดาคำตอบและทำงานจากสคริปต์ แต่น่ารำคาญจริง ๆ เมื่อคุณลองแพ็คเกจใหม่ ) ประเด็นหลักคือการมีปฏิสัมพันธ์ระหว่างสมมติฐานที่ทำโดย ssh และ debconf ของส่วนหน้าต่างๆ
เริ่มต้นด้วย ssh ssh สมมติว่าเมื่อคุณไม่ได้ระบุคำสั่งรีโมตคุณต้องการ pty บนรีโมตรีโมตและคุณระบุรีโมตที่คุณไม่ต้องการ (ซึ่งทำงานได้ดีมาก 90% ของเวลาไม่ใช่แค่อันนี้) สิ่งนี้สามารถแทนที่ได้โดย-t
ตัวเลือกที่บังคับให้ pty หรือ-T
ตัวเลือกที่บังคับให้ไม่มี pty (หรือตัวเลือกไฟล์ปรับแต่งที่เกี่ยวข้อง) นอกจากนี้เมื่อใช้ pty TERM
ตัวแปรสภาพแวดล้อมจะถูกคัดลอก (อาจมีข้อยกเว้นเอกสารการตรวจสอบสำหรับรายละเอียดที่สมบูรณ์และแบบฟอร์มการชิงโชคเป็นทางการ) นอกจากนี้ยังทราบว่า-x
ตัวเลือกปิดใช้งานการส่งต่อ X11 และ-X
เปิดใช้งาน
Debconf ไม่มีข้อกำหนดด้านการโต้ตอบ (ตามการออกแบบ) แต่ส่วนหน้าต่าง ๆ ทำและแต่ละคนมีข้อกำหนดที่แตกต่างกัน
ฉันเชื่อว่าส่วนหน้าที่ดูดีที่สุดคือคำพังเพย (นอกจากนี้ยังมีส่วนหน้า ked ที่ฉันไม่ได้ทำงาน) ส่วนหน้า gnome (และ kde หนึ่งเช่นกัน) ต้องการบางไลบรารีที่ไม่ใช่ค่าเริ่มต้นและเซิร์ฟเวอร์ X11 ดังนั้นบรรทัดคำสั่งเพื่อบังคับใช้ส่วนหน้า gnome (เมื่อติดตั้งไลบรารีที่เหมาะสม) จะเป็น
ssh -X <remote_srv> "DEBIAN_FRONTEND=gnome apt-get autoremove"
หรือถ้าคุณชอบ kde
ssh -X <remote_srv> "DEBIAN_FRONTEND=kde apt-get autoremove"
ส่วนหน้าโต้ตอบ (ค่าเริ่มต้น) ต้องมี pty และเทอร์มินัลที่มีระดับการทำงานขั้นต่ำที่ระบุไว้ในตัวแปร TERM (ในทางปฏิบัตินี่คือทุกสิ่งที่มีคำอธิบาย terminfo ที่สมบูรณ์ยกเว้นใบ้)
ssh -t <remote_srv> "TERM=$TERM DEBIAN_FRONTEND=dialog apt-get autoremove"
หรือ
ssh -t <remote_srv> "apt-get autoremove"
ส่วนหน้า readline มีข้อกำหนดที่เข้มงวดน้อยกว่าและจะทำงานกับเทอร์มินัลโง่ แต่จะต้องมี pty
ssh -t <remote_srv> "DEBIAN_FRONTEND=readline apt-get autoremove"
ส่วนหน้าของตัวแก้ไขขึ้นอยู่กับตัวแก้ไขซึ่งจะมีข้อกำหนดเฉพาะขึ้นอยู่กับตัวแก้ไข
ssh -t <remote_srv> "DEBIAN_FRONTEND=editor EDITOR=vi apt-get autoremove"
ssh -X <remote_srv> "DEBIAN_FRONTEND=editor EDITOR=gvim\ -f apt-get autoremove"
ส่วนหน้าแบบไม่มีการโต้ตอบไม่มีข้อกำหนด แต่มันไม่ได้ถามคำถามใด ๆ (ซึ่งอาจหรืออาจไม่ใช่สิ่งที่คุณต้องการ)
ssh <remote_srv> "DEBIAN_FRONTEND=noninteractive apt-get autoremove"