web-dev-qa-db-ja.com

dpkg-reconfigure:stdinを再度開くことができません:ファイルまたはディレクトリがありません

次のパッケージをインストールする場合、ubuntu vagrant vmubuntu 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にエラー行を引き起こしています。

何が原因であるか、警告を抑制する方法は誰か

76
Daithí

答えは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プロビジョニング。

23
Daithí

apt-get呼び出し:

export DEBIAN_FRONTEND=noninteractive

これにより、debconfはインタラクティブな入力をまったく期待しないフロントエンドを使用するようになり、stdinにアクセスすることさえできなくなります。

94
der_gabe

次のコマンドを実行します。

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
9
kenorb

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

だから、あなたがやりたいと言っていることについては、私が与えた最初のコマンドだけが必要です。

5
BullShark