dpkg-reconfigure:无法重新打开stdin:没有文件或目录

我在ubuntu host上为ubuntu vagrant vm构buildconfiguration脚本,这两个脚本都是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 

试了一下search结果是可以用apt-get来得到其他的错误,不知道如何抑制以上的警告。 安装工作,但上面的警告是造成stream浪汉up stdout中的错误线。

任何人都不知道可能是什么原因或如何抑制警告

    在任何apt-get调用之前,通过将以下内容放入configuration脚本中,我得到了错误消息:

     export DEBIAN_FRONTEND=noninteractive 

    这使得debconf使用一个根本不需要任何交互式input的前端,防止它甚至不能访问stdin

    答案是按照以下方式设置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提供资源。

    Bashredirect适用于stdout和stderr。

    要redirect错误stream,请使用以下命令:

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

    要redirect两个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 

    所以对于你所说的你想要做的事情,你只需要我给的第一个命令。

    运行这个命令:

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

    看看你是否有这个文件。 如果是这样的话,解决scheme是注释DPkg行,防止在安装前用debconf预先configuration所有软件包。

    所以将这些命令添加到您的供应文件中:

     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