Vraag dpkg-herconfiguratie: niet in staat om stdin opnieuw te openen: geen bestand of map


Ik bouw een provisioning-script voor een ubuntu vagrant vm, op een ubuntu host, beide 12.10 64bit Bij het installeren van de volgende pakketten:

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

Ik krijg de waarschuwing:

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

hebben geprobeerd te zoeken maar de resultaten werpen elke andere fout op met apt-get mogelijk, kunnen niet achterhalen hoe de bovenstaande waarschuwing te onderdrukken. De installaties werken, maar de bovenstaande waarschuwing veroorzaakt foutlijnen in de zwerver naar boven.

Iedereen enig idee wat de oorzaak zou kunnen zijn of hoe de waarschuwing te onderdrukken


64
2018-04-19 01:24


oorsprong




antwoorden:


Ik kreeg de foutmelding om weg te gaan door het volgende in mijn provisioning-script te plaatsen, voorafgaand aan elk apt-get noemt:

export DEBIAN_FRONTEND=noninteractive

Dit maakt debconf gebruik een frontend die helemaal geen interactieve invoer verwacht, waardoor deze zelfs geen toegang probeert te krijgen stdin.


76
2018-02-23 11:55



Dit is het juiste antwoord. De meeste configuratiebeheertoepassingen (SaltStack, Puppet, enz.) Gebruiken dit voor niet-interactieve pakketinstallaties. - notpeter
Juiste antwoord, ik tweede. - stefgosselin
Het werkt echter niet voor dpkg-preconfigure. - kursus


Het antwoord was om de perl:localeis als per deze:

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

Dit lost het probleem op, maar voegt wel ongewenste tijd toe aan de vagrant up provisioning.


23
2018-04-19 02:41



Dit alleen werkte niet voor mij. Ik kreeg nog steeds de waarschuwing totdat ik @ kenorb's implementeerde 70debconf commenting-out fix voor voorconfiguratie. - Brian
Mijn vraag is: is het goed om deze waarschuwingen te negeren? @Coombesy - Marco Prins
@MarcoPrins Ja, u kunt waarschuwingen zoals "stdin: is not a tty" of "dpkg-preconfigure veilig negeren: niet in staat om stdin opnieuw te openen: geen bestand of map". Een van de vele bevestigingen rond kan worden gevonden, b.v. hier ikusalic.com/blog/2013/10/03/vagrant-intro - mloskot


Voer deze opdracht uit:

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

om te zien of je dit bestand hebt. Als dat zo is, is de oplossing om commentaar te geven op de DPkg regel die voorconfiguratie van alle pakketten voorkomt debconf voordat ze zijn geïnstalleerd.

Dus voeg deze commando's toe aan uw provisiedossier:

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

Anders verwijder je het als je niets om dit bestand geeft:

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

Hier zijn een paar andere opdrachten om te overwegen, maar ik denk niet dat ze iets nuttigs doen:

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

5
2017-08-30 00:06



Dit is wat uiteindelijk voor mij werkte op OSX Yosemite Vagrant en Ubuntu 14.04. - Brian
U moet misschien nog steeds de shell wijzigen die Vagrant gebruikt. - ToothlessRebel


Bash omleiding werkt prima voor stdout en stderr.

Gebruik de volgende stappen om de foutstroom om te leiden:

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

Als u zowel stdout (berichten die geen fouten / waarschuwingen zijn) en stderr beide omleiden, gebruikt u:

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

Dat is een snelkoppeling die hiervoor in bash beschikbaar is:

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

Of:

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

Hieronder kunnen we duidelijk zien dat bestandsdescriptor 1 stdout, 2 stderr, 3 stdin is.

$ 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

Dus voor wat je zegt dat je wilt doen, zou je alleen het allereerste commando moeten hebben dat ik gaf.


4
2018-04-19 01:29



Ik wil de normale stdout van apt-get kunnen herhalen. Maar misschien heb je me op de goede weg ... ik zal proberen alleen de stderr naar de bit-bucket te sturen - proost edit: we hebben allebei tegelijkertijd commentaar gegeven lol - proost (nogmaals) - Daithí
Ik heb de post bewerkt. Zie de laatste regel. - BullShark