ubuntuusers.de

Kommandozeilen Abfrage bei Paketinstallation unterdrücken

Status: Gelöst | Ubuntu-Version: Ubuntu 16.04 (Xenial Xerus)
Antworten |

CoderGrizzly

Anmeldungsdatum:
20. März 2012

Beiträge: Zähle...

Hallo zusammen, ☺

ich habe hier eine auf Ubuntu 16.04 basierende Appliance, in welche Pakete aus dem öffentlichen Repository installiert werden. Allerdings nicht über das öffentliche Repository direkt, sondern einen Update Server, welcher sich diese zieht und in eine Update Datei reinsteckt. Der Updater auf dem System schnappt sich dann die Datei, entpackt sie und soll dann die Pakete installieren.

Allerdings hängt die Sache seit neuestem an dem Paket base-files welches unter anderem die Datei /etc/issue enthält (Anscheinend steht das die Ubuntu Version drin):

Setting up base-files (9.4ubuntu4.8) ...

Configuration file '/etc/issue'
 ==> Modified (by you or by a script) since installation.
 ==> Package distributor has shipped an updated version.
   What would you like to do about it ?  Your options are:
    Y or I  : install the package maintainer's version
    N or O  : keep your currently-installed version
      D     : show the differences between the versions
      Z     : start a shell to examine the situation
 The default action is to keep your current version.

Der Updater hat die Pakete bisher mit folgender Kommandozeile installiert:

DEBIAN_FRONTEND=noninteractive /usr/bin/apt-get -o Dpkg::Options::="--force-confdef" -o Dpkg::Options::="--force-confold" --quiet --yes --force-yes install [Absoluter Pfad zu den Paketen]

Nachdem der Fehler aufgetreten ist, habe ich es auch mal mit

DEBIAN_FRONTEND=noninteractive /usr/bin/apt-get -o Dpkg::Options::="--force-confnew" --quiet --yes --force-yes install [Absoluter Pfad zu den Paketen]

probiert. Hat aber keine Änderung / Verbesserung gebracht.

Nun ist die Frage, ob es sonst noch irgendwelche Optionen gibt, die man dem Ganzen mitgeben kann.

Frieder108

Avatar von Frieder108

Anmeldungsdatum:
7. März 2010

Beiträge: 9251

Hi, zu deinem eigentlichen Anliegen kann ich dir nicht viel sagen - aber als Hilfe für weiteren Support durch Andere, wie hast du dich hier entschieden?

Configuration file '/etc/issue'
 ==> Modified (by you or by a script) since installation.
 ==> Package distributor has shipped an updated version.
   What would you like to do about it ?  Your options are:
    Y or I  : install the package maintainer's version
    N or O  : keep your currently-installed version
      D     : show the differences between the versions
      Z     : start a shell to examine the situation
 The default action is to keep your current version. 

seahawk1986

Anmeldungsdatum:
27. Oktober 2006

Beiträge: 11229

Wohnort: München

Probier es mal mit der "Wunderkombination" aus dem Debian-Handbuch: https://debian-handbook.info/browse/de-DE/stable/sect.automatic-upgrades.html#id-1.9.17.9

CoderGrizzly

(Themenstarter)

Anmeldungsdatum:
20. März 2012

Beiträge: 73

Frieder108 schrieb:

Hi, zu deinem eigentlichen Anliegen kann ich dir nicht viel sagen - aber als Hilfe für weiteren Support durch Andere, wie hast du dich hier entschieden?

Configuration file '/etc/issue'
 ==> Modified (by you or by a script) since installation.
 ==> Package distributor has shipped an updated version.
   What would you like to do about it ?  Your options are:
    Y or I  : install the package maintainer's version
    N or O  : keep your currently-installed version
      D     : show the differences between the versions
      Z     : start a shell to examine the situation
 The default action is to keep your current version. 

Ehrlich gesagt verstehe ich die Frage nicht ganz. 🤔 In dem speziellen Fall wäre es sicher das Beste, die Version aus dem Paket zu nehmen. Wie gesagt: Sie scheint die aktuell installierte Version von Ubuntu zu enthalten. Allerdings weiß ich nicht, welche Dateien noch in dem Paket drin sind. Weiter geht es bei mir ja um - mehr oder weniger - alle Pakete. 😉

CoderGrizzly

(Themenstarter)

Anmeldungsdatum:
20. März 2012

Beiträge: 73

seahawk1986 schrieb:

Probier es mal mit der "Wunderkombination" aus dem Debian-Handbuch: https://debian-handbook.info/browse/de-DE/stable/sect.automatic-upgrades.html#id-1.9.17.9

export DEBIAN_FRONTEND=noninteractive
yes '' | apt-get -y -o DPkg::options::="--force-confdef" -o DPkg::options::="--force-confold" dist-upgrade

Hm, okay, muss ich mal schauen, wie ich das unterbringen kann, da ich apt-get leider nicht aus einem Skript, sondern aus einem Programm aufrufe. Und in den stdin pippen geht da halt nicht. Zumindest nicht ohne weiteres. 🤓

Ich geb' aber nochmal Bescheid, ob es das Problem gelöst hat oder nicht. Vermutlich Montag oder Dienstag.

CoderGrizzly

(Themenstarter)

Anmeldungsdatum:
20. März 2012

Beiträge: 73

Also: Die Lösung von seahawk1986 bzw. die "Wunderkombination" aus dem Debian-Handbuch hat den Durchbruch gebracht.

In meinem Skript (ich habe die Sache in ein Skript ausgelagert, welches ich aus meinem Programm aufrufe) sieht die Sache wie folgt aus:

#!/bin/sh
export DEBIAN_FRONTEND=noninteractive
/usr/bin/yes '' | /usr/bin/apt-get --yes --force-yes --quiet -o Dpkg::Options::="--force-confdef" -o Dpkg::Options::="--force-confold" install "$@"
DEBIAN_FRONTEND=noninteractive

"sollte" interaktive Abfragen unterbinden.

--yes --force-yes

"sollten" auf alle Anfragen mit "Ja" antworten.

--quiet

ist für das Unterbinden des Fortschrittsbalken, der in meinem Fall nicht sinnvoll. Im Gegenteil sogar, da ich die Ausgabe logge.

-o Dpkg::Options::="--force-confdef"

"sollte" immer die Standard Option bei Fragen bzw. Konfigurationsdateien auswählen.

-o Dpkg::Options::="--force-confold"

"sollte" - falls die Standard Option nicht geht, immer die alte Konfigurationsdatei nehmen.

"$@"

schnappt sich die ganzen Paketpfade, welche ich dem Skript mitgebe.

Und das hier ist der heiße Punkt, der die Lösung in meinem Fall brachte:

/usr/bin/yes '' |

Das Programm kloppt - wenn ohne Parameter aufgerufen - einfach 'y' (gefolgt von Enter) in den StdIn (die Standardeingabe) rein, bis es abgebrochen wird (bspw. Ctrl+C). Man kann es aber auch anweisen, andere Strings zu benutzen. Sprich in dem Fall hier "ballert" das Programm über den Pipe apt-get mit Enter Eingaben voll, bis dieser fertig ist. Vielleicht nicht die schönste Lösung, aber sie funktioniert. 😉

Danke an seahawk1986 an dieser Stelle nochmal. 🙂

Edit: Siehe auch: https://askubuntu.com/questions/1152915/surpress-command-line-questions-during-package-installation/

Antworten |