it-swarm.com.de

dpkg-refreshfigure: stdin kann nicht erneut geöffnet werden: Keine Datei oder kein Verzeichnis

Ich erstelle ein Bereitstellungsskript für ein 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

ich habe versucht zu suchen, aber die Ergebnisse werfen jeden anderen Fehler mit apt-get möglich auf. Ich kann nicht herausfinden, wie die obige Warnung unterdrückt werden kann. Die Installationen funktionieren, aber die obige Warnung verursacht Fehlerzeilen im Vagrant Up Standard.

Jeder weiß, was die Ursache sein könnte oder wie man die Warnung unterdrückt

76
Daithí

Die Antwort war, die Perl:locale Gemäß this :

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 löst das Problem, verlängert jedoch die vagrant up - Bereitstellung um unerwünschte Zeit.

23
Daithí

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

export DEBIAN_FRONTEND=noninteractive

Dadurch verwendet debconf ein Frontend, das überhaupt keine interaktive Eingabe erwartet, und verhindert, dass es überhaupt versucht, auf stdin zuzugreifen.

94
der_gabe

Führen Sie diesen Befehl aus:

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

um zu sehen, ob Sie diese Datei haben. In diesem Fall besteht die Lösung darin, die Zeile DPkg auskommentieren, wodurch verhindert wird, dass alle Pakete vor der Installation mit debconf vorkonfiguriert werden.

Fügen Sie Ihrer Bereitstellungsdatei folgende Befehle hinzu:

Sudo ex +"%[email protected]@//DPkg" -cwq /etc/apt/apt.conf.d/70debconf
Sudo dpkg-reconfigure debconf -f noninteractive -p critical

Wenn Sie sich nicht für diese Datei interessieren, entfernen Sie sie einfach:

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

Hier sind einige andere Befehle, die berücksichtigt werden müssen, aber ich denke nicht, dass sie etwas Nützliches bewirken:

Sudo dpkg-preconfigure -f noninteractive -p critical
Sudo dpkg --configure -a
9
kenorb

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

Verwenden Sie Folgendes, um den Fehlerstrom umzuleiten:

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

Verwenden Sie Folgendes, um sowohl stdout (Nachrichten, die keine Fehler/Warnungen sind) als auch stderr umzuleiten:

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, dass Sie tun möchten, sollten Sie nur den allerersten Befehl benötigen, den ich gegeben habe.

5
BullShark