Wie installiere ich Pakete mit APT ohne Benutzerinteraktion?


8

Ich habe ein Skript, das Kernel-Header in Debian Squeeze herunterlädt und ersetzt.

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  
}

Das Problem, das ich habe, ist, dass aptitude nach dem Herunterladen des Pakets das Skript in eine Text-GUI wirft und dem Benutzer eine Reihe von Fragen stellt. Gibt es eine Möglichkeit, dies zu überspringen oder zu den entsprechenden Zeiten Tab / Eingabe zu senden, um "OK" für alle Antworten auszuwählen?


1
Ich bin nicht sicher, ob es in Ihrem Fall funktioniert, aber die Einstellung DEBIAN_FRONTEND = noninteractivefunktioniert für Debian / Ubuntu-Release-Upgrades.
Daniel t.

Antworten:


8

Aufgrund des Kommentars von Daniel t konnte ich dies tun DEBIAN_FRONTEND=noninteractive

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

1
Sie sollten auch die Voreinstellung der Pakete untersuchen. Auf diese Weise können Sie die Fragen beantworten, bevor sie überhaupt gestellt werden.
Zoredache

4

Beachten Sie, dass diese von mir zitierte Antwort nicht alle Dialoge entfernt, sondern weiterhin anzeigt, was APT / DPKG als kritisch erachtet . Vielleicht ist es am besten, mit der zweiten Option + über das readlineFrontend zu experimentieren debconfund eine Antwortdatei vorzubereiten.

Zitat aus einer Schwesterseite :

Dies sollte tun, was Sie gefragt haben; Stellen Sie anschließend die Konfigurationsfragen:

$ 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

Alternativ können Sie versuchen, alle Konfigurationsfragen vorher zu stellen:

$ 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

apt-get upgrade funktioniert in meiner Situation nicht. Ich ersetze Kernel-Header, aktualisiere den Kernel nicht auf eine neue Version, sondern wähle eine andere Version aus.
13 바

Ich zitierte die Antwort so wie sie ist. Dies funktioniert apt-get installso gut wie und dpkg-configurewird so oder so genannt.
fuero

Das fordert den Benutzer dennoch auf, Fragen zu beantworten, die er nicht sieht, da dieser Teil des Skripts innerhalb einer Funktion ausgeführt wird. Ich könnte es ändern, aber die Person, die das Skript ausführt (die nicht ich ist), wird es nicht verstehen. Ich war wirklich auf der Suche nach einer automatisierten Lösung.
13 바

0

Sie können mit dem Tool senden, was Sie möchten expect, vorausgesetzt, Sie können die "geeigneten Zeiten" identifizieren (da sich die Eingabe nicht ändert).


Die Häufigkeit, mit der auf "OK" geklickt wird, hängt von der Maschine und ihren Konfigurationen ab.
13 바

Das allein wäre wahrscheinlich kein Problem, solange es möglich ist, die Fragen (oder das Ende der Fragen) richtig zu erkennen.
Hauke ​​Laging
Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.