Frage dpkg-reconfigure: stdin kann nicht wieder geöffnet werden: Keine Datei oder Verzeichnis


Ich erstelle ein Bereitstellungsskript für eine ubuntu vagrant vm, auf einen ubuntu host, beide 12.10 64bit Bei der Installation der folgenden Pakete:

sudo apt-get -y install php5-xsl graphviz php-pear unison

Ich bekomme die Warnung:

dpkg-reconfigure: unable to re-open stdin: No file or directory

habe versucht zu suchen, aber Ergebnisse werfen jeden anderen Fehler mit apt-get möglich, kann nicht herausfinden, wie man die Warnung oben unterdrückt. Die Installation funktioniert, aber die obige Warnung verursacht Fehlerzeilen im vagrant up stdout.

Irgendjemand irgendeine Idee, was die Ursache sein könnte oder wie man die Warnung unterdrückt


64
2018-04-19 01:24


Ursprung




Antworten:


Ich habe die folgende Fehlermeldung erhalten, indem ich Folgendes in mein Bereitstellungsskript eingefügt habe: apt-get Anrufe:

export DEBIAN_FRONTEND=noninteractive

Das macht debconf Verwenden Sie ein Frontend, das überhaupt keine interaktiven Eingaben erwartet und verhindert, dass es überhaupt versucht, darauf zuzugreifen stdin.


76
2018-02-23 11:55



Dies ist die richtige Antwort. Die meisten Konfigurationsverwaltungsanwendungen (SaltStack, Puppet usw.) nutzen dies für nicht interaktive Paketinstallationen. - notpeter
Richtige Antwort, das bezweifle ich. - stefgosselin
Es funktioniert jedoch nicht für dpkg-preconfigure. - kursus


Die Antwort war, die perl:localeist wie per diese:

export LANGUAGE=en_US.UTF-8
export LANG=en_US.UTF-8
export LC_ALL=en_US.UTF-8
locale-gen en_US.UTF-8
dpkg-reconfigure locales

Dies behebt das Problem, fügt jedoch unerwünschte Zeit hinzu vagrant up Bereitstellung.


23
2018-04-19 02:41



Das allein hat bei mir nicht funktioniert. Ich habe immer noch die Warnung bekommen, bis ich @ Kenorb's implementiert habe 70debconf Auskommentierung für Pre-Configure. - Brian
Meine Frage ist: Ist es in Ordnung, diese Warnungen zu ignorieren? @Überschrift - Marco Prins
@MarcoPrins Ja, Sie können Warnungen wie "stdin: ist nicht ein tty" oder "dpkg-preconfigure: kann stdin nicht öffnen: Keine solche Datei oder Verzeichnis" ignorieren. Eine von zahlreichen Bestätigungen kann gefunden werden, z.B. Hier ikusalic.com/blog/2013/10/03/vagrant-intro - mloskot


Führe diesen Befehl aus:

cat /etc/apt/apt.conf.d/70debconf 

um zu sehen, ob Sie diese Datei haben. Wenn ja, ist die Lösung, die auskommentieren DPkg Zeile, die das Vorkonfigurieren aller Pakete verhindert debconf bevor sie installiert werden.

Fügen Sie diese Befehle zu Ihrer Bereitstellungsdatei hinzu:

sudo ex +"%s@DPkg@//DPkg" -cwq /etc/apt/apt.conf.d/70debconf
sudo dpkg-reconfigure debconf -f noninteractive -p critical

Wenn Sie diese Datei nicht interessieren, entfernen Sie sie einfach:

sudo rm -v /etc/apt/apt.conf.d/70debconf

Hier sind einige andere Befehle zu beachten, aber ich denke nicht, dass sie etwas Nützliches tun:

sudo dpkg-preconfigure -f noninteractive -p critical
sudo dpkg --configure -a

5
2017-08-30 00:06



Das hat bei OSX Yosemite Vagrant und Ubuntu 14.04 endlich funktioniert. - Brian
Möglicherweise müssen Sie die Shell, die Vagrant verwendet, noch ändern. - ToothlessRebel


Bash-Umleitung funktioniert gut für stdout und stderr.

Verwenden Sie Folgendes, um den Fehlerstream umzuleiten:

sudo apt-get -y install php5-xsl graphviz php-pear unison 2> /dev/null

Um sowohl stdout (Nachrichten, die keine Fehler / Warnungen sind) als auch stderr umzuleiten, verwenden Sie:

sudo apt-get -y install php5-xsl graphviz php-pear unison &> /dev/null

Das ist eine Abkürzung, die in bash dafür verfügbar ist:

sudo apt-get -y install php5-xsl graphviz php-pear unison > /dev/null 2>&1

Oder:

sudo apt-get -y install php5-xsl graphviz php-pear unison 1> /dev/null 2>&1

Unten können wir deutlich sehen, dass der Dateideskriptor 1 stdout, 2 stderr, 3 stdin ist.

$ ls -l /dev/std*
lrwxrwxrwx 1 root root 15 Apr 18 19:03 /dev/stderr -> /proc/self/fd/2
lrwxrwxrwx 1 root root 15 Apr 18 19:03 /dev/stdin -> /proc/self/fd/0
lrwxrwxrwx 1 root root 15 Apr 18 19:03 /dev/stdout -> /proc/self/fd/1

Für das, was Sie sagen wollen, sollten Sie nur den ersten Befehl brauchen, den ich gegeben habe.


4
2018-04-19 01:29



Ich möchte das normale stdout von apt-get wiedergeben können. Aber du magst mich auf dem richtigen Weg haben ... ich werde versuchen, nur den stderr zum bit-bucket-cheers edit zu schicken: wir beide kommentieren gleichzeitig lol - cheers (nochmal) - Daithí
Ich habe den Beitrag bearbeitet. Siehe die letzte Zeile. - BullShark