Bagaimana cara menginstal paket dengan APT tanpa interaksi pengguna?

9

Saya memiliki skrip yang mengunduh dan mengganti header kernel di Debian.

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  
}

Masalah yang saya alami adalah bahwa setelah aptitude mengunduh paket itu melempar skrip ke dalam gui teks dan menanyakan banyak pertanyaan kepada pengguna. Apakah ada cara untuk melewati ini atau mengirim tab / masuk pada waktu yang tepat untuk memilih "OK" untuk semua jawaban?

에이 바
sumber
1
Saya tidak yakin apakah itu berfungsi dalam kasus Anda, tetapi pengaturan DEBIAN_FRONTEND = noninteractiveberfungsi untuk peningkatan rilis debian / ubuntu.
Daniel t.

Jawaban:

9

Berdasarkan komentar Daniel t saya bisa melakukan ini DEBIAN_FRONTEND=noninteractive

DEBIAN_FRONTEND=noninteractive /usr/bin/apt-get install -y -q --force-yes linux-image-2.6.32-5-amd64 
에이 바
sumber
1
Anda juga harus menyelidiki preseeding paket. Ini memungkinkan Anda untuk menjawab pertanyaan bahkan sebelum mereka ditanyai.
Zoredache
4

Berhati-hatilah karena jawaban yang saya kutip ini tidak akan menghilangkan semua dialog, masih akan menampilkan apa yang dianggap penting oleh APT / DPKG . Mungkin lebih baik bereksperimen dengan opsi kedua + menggunakan readlinefrontend untuk debconfdan menyiapkan file jawaban.

Mengutip dari situs saudara :

Ini harus melakukan apa yang Anda minta; mengajukan pertanyaan konfigurasi setelahnya:

$ 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

Atau Anda dapat mencoba menanyakan semua pertanyaan konfigurasi sebelumnya:

$ 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
fuero
sumber
upgrade apt-get tidak akan berfungsi dalam situasi saya. Saya mengganti header kernel, tidak memutakhirkan kernel ke versi baru, tetapi memilih versi yang berbeda.
에이 바
Saya mengutip jawabannya apa adanya. Ini berfungsi dengan apt-get installbaik dan dpkg-configureakan disebut cara baik.
fuero
Itu masih mendorong pengguna untuk menjawab pertanyaan, yang tidak akan mereka lihat karena bagian dari skrip berjalan dalam suatu fungsi - saya bisa mengubahnya tetapi orang yang menjalankan skrip (yang bukan saya) tidak akan mengerti. Saya benar-benar mencari solusi otomatis.
에이 바
0

Anda dapat mengirim apa pun yang Anda inginkan dengan alat ini expect, mengingat Anda dapat mengidentifikasi "waktu yang tepat" (karena input tidak berubah).

Hauke ​​Laging
sumber
Jumlah waktu untuk menekan "OK" bervariasi tergantung pada mesin dan konfigurasinya.
에이 바
Itu saja mungkin tidak akan menjadi masalah selama masih mungkin untuk mengenali pertanyaan dengan benar (atau akhir dari pertanyaan).
Hauke ​​Laging