Giải pháp của Alex không khắc phục được lỗi và anh ấy gần như đã hiểu đúng, nhưng nó không cho phép bạn trả lời bất kỳ câu hỏi nào (điều này tốt khi bạn đã đoán trước các câu trả lời và đang chạy từ một tập lệnh, nhưng thực sự khó chịu khi bạn đang thử các gói mới ). Vấn đề cốt lõi là sự tương tác giữa các giả định được tạo bởi các mặt trận khác nhau của ssh và debconf.
Hãy bắt đầu với ssh. ssh giả định rằng khi bạn không chỉ định một lệnh từ xa, bạn muốn một pty ở đầu từ xa và bạn chỉ định một điều khiển từ xa mà bạn không (hoạt động rất tốt 90% thời gian, không phải là điều này). Điều này có thể được ghi đè bằng -t
tùy chọn buộc pty hoặc -T
tùy chọn buộc không có pty (hoặc tùy chọn tệp cấu hình tương ứng). Hơn nữa khi sử dụng pty, TERM
biến môi trường được sao chép (ngoại lệ có thể áp dụng tài liệu kiểm tra để biết chi tiết hoàn thành và mẫu nhập cảnh rút thăm trúng thưởng chính thức). Cũng cần lưu ý -x
tùy chọn vô hiệu hóa chuyển tiếp X11 và -X
cho phép nó.
Bản thân Debconf không có yêu cầu tương tác (theo thiết kế), nhưng các mặt trận khác nhau, và mỗi loại có các yêu cầu khác nhau.
Tôi tin rằng giao diện đẹp nhất là gnome (cũng có một giao diện ked mà tôi đã không làm việc). Frontend gnome (và kde one) cũng yêu cầu một số thư viện không mặc định và máy chủ X11, do đó dòng lệnh để buộc frontend gnome (một khi các thư viện thích hợp được cài đặt) sẽ
ssh -X <remote_srv> "DEBIAN_FRONTEND=gnome apt-get autoremove"
hoặc nếu bạn thích kde
ssh -X <remote_srv> "DEBIAN_FRONTEND=kde apt-get autoremove"
Giao diện hộp thoại (mặc định) yêu cầu pty và thiết bị đầu cuối có mức chức năng tối thiểu được chỉ định trong biến TERM (trong thực tế, đây là bất cứ điều gì có mô tả terminfo hoàn chỉnh trừ câm).
ssh -t <remote_srv> "TERM=$TERM DEBIAN_FRONTEND=dialog apt-get autoremove"
hoặc là
ssh -t <remote_srv> "apt-get autoremove"
frontend readline có các yêu cầu ít nghiêm ngặt hơn và sẽ hoạt động với các thiết bị đầu cuối câm, nhưng sẽ cần một pty.
ssh -t <remote_srv> "DEBIAN_FRONTEND=readline apt-get autoremove"
Frontend biên tập viên phụ thuộc vào một trình soạn thảo sẽ có các yêu cầu cụ thể tùy thuộc vào trình soạn thảo.
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"
Frontend không tương tác không có yêu cầu nhưng nó không hỏi bất kỳ câu hỏi nào (có thể hoặc không thể là những gì bạn muốn).
ssh <remote_srv> "DEBIAN_FRONTEND=noninteractive apt-get autoremove"