次のパッケージをインストールする場合、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で他のすべてのエラーをスローしています。上記の警告を抑制する方法を見つけることができません。インストールは機能しますが、上記の警告はvagrant up stdoutにエラー行を引き起こしています。
何が原因であるか、警告を抑制する方法は誰か
答えはPerl:locale
のとおり 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
これで問題は解決しますが、vagrant up
プロビジョニング。
apt-get
呼び出し:
export DEBIAN_FRONTEND=noninteractive
これにより、debconf
はインタラクティブな入力をまったく期待しないフロントエンドを使用するようになり、stdin
にアクセスすることさえできなくなります。
次のコマンドを実行します。
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
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
だから、あなたがやりたいと言っていることについては、私が与えた最初のコマンドだけが必要です。