Làm cách nào để cài đặt các gói với APT mà không cần tương tác của người dùng?


8

Tôi có một tập lệnh tải xuống và thay thế các tiêu đề kernel trong Debian nén.

function fixHeaders(){
    #Replace the kernel headers from OVH with standard kernel headers...
    aptitude -y install linux-image-2.6.32-5-amd64  
    sed s/'GRUB_DEFAULT=0'/'GRUB_DEFAULT=1'/g
    update-grub
    echo "Rebooting the machine. Run this script again after reboot and choose option 2."
    sleep 1
    reboot  
}

Vấn đề tôi gặp phải là sau khi aptitude tải gói, nó ném tập lệnh vào gui văn bản và hỏi người dùng một loạt câu hỏi. Có cách nào để bỏ qua điều này hoặc gửi tab / nhập vào thời điểm thích hợp để chọn "OK" cho tất cả các câu trả lời không?


1
Tôi không chắc nếu nó hoạt động trong trường hợp của bạn, nhưng cài đặt DEBIAN_FRONTEND = noninteractivehoạt động để nâng cấp phát hành debian / ub Ubuntu.
Daniel t.

Câu trả lời:


8

Dựa trên nhận xét của Daniel t tôi đã có thể làm điều này với DEBIAN_FRONTEND=noninteractive

DEBIAN_FRONTEND=noninteractive /usr/bin/apt-get install -y -q --force-yes linux-image-2.6.32-5-amd64 

1
Bạn cũng nên điều tra khả năng chèn sẵn các gói. Điều này cho phép bạn trả lời các câu hỏi trước khi chúng được hỏi.
Zoredache

4

Xin lưu ý rằng câu trả lời này tôi trích dẫn sẽ không thoát khỏi tất cả các cuộc đối thoại, nó vẫn sẽ hiển thị những gì APT / DPKG cho là quan trọng . Có lẽ tốt nhất là thử nghiệm tùy chọn thứ hai + sử dụng readlinelối vào debconfvà chuẩn bị tệp trả lời.

Trích dẫn từ một trang web chị em :

Điều này sẽ làm những gì bạn yêu cầu; hỏi các câu hỏi cấu hình sau đó:

$ DEBIAN_PRIORITY=critical
$ export DEBIAN_PRIORITY
$ apt-get upgrade
# Wait a long time.   Should be almost entirely noninteractive.
$ dpkg-reconfigure --default-priority=medium --unseen-only

Ngoài ra, bạn có thể thử hỏi tất cả các câu hỏi cấu hình trước đây:

$ apt-get clean
$ cat >> /etc/apt/apt.conf <<EOF
// Pre-configure all packages before
// they are installed.
DPkg::Pre-Install-Pkgs {
    "dpkg-preconfigure --apt --priority=low";
};
EOF
$ apt-get upgrade

nâng cấp apt-get sẽ không hoạt động trong tình huống của tôi. Tôi đang thay thế các tiêu đề kernel, không nâng cấp kernel lên phiên bản mới, nhưng chọn một phiên bản khác.
에 ảnh

Tôi trích dẫn câu trả lời là có. Điều này làm việc với apt-get installcũng như dpkg-configuresẽ được gọi một trong hai cách.
fuero

Điều đó vẫn nhắc người dùng trả lời các câu hỏi mà họ sẽ không thấy vì một phần của tập lệnh chạy trong một chức năng - tôi có thể thay đổi nó nhưng người chạy tập lệnh (không phải tôi) sẽ không hiểu. Tôi đã thực sự tìm kiếm một giải pháp tự động.
에 ảnh

0

Bạn có thể gửi bất cứ điều gì bạn muốn với công cụ expect, với điều kiện bạn có thể xác định "thời điểm thích hợp" (vì đầu vào không thay đổi).


Số lần nhấn "OK" sẽ khác nhau tùy thuộc vào máy và cấu hình của máy.
에 ảnh

Điều đó một mình có lẽ sẽ không phải là một vấn đề miễn là có thể nhận ra chính xác các câu hỏi (hoặc kết thúc các câu hỏi).
Hauke ​​Laging
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.