Вопрос: dpkg-reconfigure: невозможно повторно открыть stdin: нет файла или каталога


Я создаю сценарий подготовки для ubuntu vagrant vm, на ubuntu host, и то и другое 12.10 64bit При установке следующих пакетов:

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

Я получаю предупреждение:

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

попробовали поиск, но результаты подбрасывают каждую другую ошибку с помощью apt-get, не могут узнать, как подавить предупреждение выше. Установки работают, но предупреждение, приведенное выше, вызывает строки ошибок в бродяганом stdout.

Кто-нибудь знает, что может быть причиной или как подавить предупреждение


62
2018-04-19 01:24


Источник




Ответы:


Я получил сообщение об ошибке, чтобы уйти, поставив следующее в моем сценарии инициализации, до любого apt-get звонки:

export DEBIAN_FRONTEND=noninteractive

Это делает debconf используйте интерфейс, который не ожидает никакого интерактивного ввода, не позволяя ему даже пытаться получить доступ stdin,


71
2018-02-23 11:55



Это правильный ответ. Большинство приложений для управления конфигурациями (SaltStack, Puppet и т. Д.) Используют это для неинтерактивных пакетов. - notpeter
Правильный ответ, второй раз. - stefgosselin
Однако он не работает для dpkg-preconfigure. - kursus


Ответ состоял в том, чтобы установить perl:localeв соответствии с это:

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

Это решает проблему, но добавляет нежелательное время для vagrant up выделение ресурсов.


23
2018-04-19 02:41



Только это не помогло мне. Я до сих пор получил предупреждение, пока не реализовал @ kenorb's 70debconf исправление комментариев для предварительной настройки. - Brian
Мой вопрос: правильно ли игнорировать эти предупреждения? @Coombesy - Marco Prins
@MarcoPrins Да, вы можете смело игнорировать предупреждения типа «stdin: is not tty» или «dpkg-preconfigure: невозможно повторно открыть stdin: нет такого файла или каталога». Можно найти одно из многочисленных подтверждений, например. Вот ikusalic.com/blog/2013/10/03/vagrant-intro - mloskot


Перенаправление Bash отлично работает для stdout и stderr.

Чтобы перенаправить поток ошибок, используйте следующее:

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

Чтобы перенаправить оба stdout (сообщения, которые не являются ошибками / предупреждениями) и stderr оба, используйте:

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

Это сокращение доступно для bash для этого:

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

Или:

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

Ниже мы можем ясно видеть, что файловый дескриптор 1 - это stdout, 2 stderr, 3 stdin.

$ 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

Поэтому для того, что вы говорите, вы хотите сделать, вам нужна только первая команда, которую я дал.


4
2018-04-19 01:29



Я хочу, чтобы эхо нормальное stdout из apt-get. Но вы можете меня на правильном пути ... я попробую отправить только stderr в бит-ведро - редактирование cheers: мы оба прокомментировали в то же время lol-cheers (опять же) - Daithí
Я редактировал сообщение. Посмотрите на последнюю строку. - BullShark


Запустите эту команду:

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

чтобы увидеть, есть ли у вас этот файл. Если это так, то решение состоит в том, чтобы прокомментировать DPkg которая предотвращает предварительную настройку всех пакетов с помощью debconf прежде чем они будут установлены.

Поэтому добавьте эти команды в файл обеспечения:

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

В противном случае, если вам не нужен этот файл, просто удалите его:

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

Вот несколько других команд для рассмотрения, но я не думаю, что они ничего полезного:

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

4
2017-08-30 00:06



Это то, что окончательно сработало для меня на OSX Yosemite Vagrant и Ubuntu 14.04. - Brian
Вам все равно может потребоваться изменить использование Vagrant оболочки. - ToothlessRebel