dpkg-reconfigure: stdin yeniden açılamıyor: Dosya veya dizin yok


75

Her ikisi için de aşağıdaki paketleri kurarken, ubuntu vagrant vma için bir ön hazırlık komut dosyası oluşturuyorum :ubuntu host12.10 64bit

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

Uyarıyı alıyorum:

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

aramayı denedim ancak sonuçlar apt-get ile mümkün olan diğer tüm hataları atıyor, yukarıdaki uyarının nasıl bastırılacağını bulamıyorum. Yüklemeler işe yarıyor, ancak yukarıdaki uyarı sersemlemiş stdout'ta hata satırlarına neden oluyor.

Ne olabileceği ya da uyarının nasıl bastırılacağı konusunda bir fikri olan var mı?

Yanıtlar:


91

Herhangi bir apt-getçağrıdan önce ön hazırlık betiğime aşağıdakileri koyarak bu hata mesajını alıyorum :

export DEBIAN_FRONTEND=noninteractive

Bu, debconfhiçbir etkileşimli girdi beklemeyen ve erişmeye çalışmasını engelleyen bir ön uç kullanır stdin.


3
Bu doğru cevap. Çoğu config yönetim uygulaması (SaltStack, Puppet, vb.), Etkileşimli olmayan paket kurulumları için bunu kullanır.
notpeter

1
Doğru cevap, ikinci olarak.
stefgosselin

13
Ancak dpkg-preconfigure için çalışmıyor.
kursus

export DEBIAN_FRONTEND=noninteractivedpkg-preconfiguresahnede benim için çalıştı
Snowcrash

23

Cevap belirlemekti perl:localeuyarınca 's bu :

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

Bu sorunu çözer, ancak vagrant upprovizyona istenmeyen zaman ekler .


2
Bu yalnız benim için işe yaramadı. @ Kenorb'ın preconfigure için 70debconfyorum yapma düzeltmesini uygulayana kadar hala uyarı aldım .
Brian 21:

Sorum şu: Bu uyarıları yoksaymak doğru mudur? @Coombesy
Marco Prins

@MarcoPrins Evet, "stdin: tty değil" veya "dpkg-preconfigure: stdin yeniden açılamıyor: böyle bir dosya veya dizin yok" gibi uyarıları güvenle yok sayabilirsiniz. Çevresinde sayısız onaydan biri bulunabilir, örneğin burada ikusalic.com/blog/2013/10/03/vagrant-intro
mloskot

9

Bu komutu çalıştırın:

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

Bu dosyanın sizde olup olmadığını görmek için Öyleyse, çözüm, DPkgtüm paketlerin debconfkurulmadan önce önceden yapılandırılmasını önleyen satırı yorumlamaktır .

Öyleyse bu komutları sağlama dosyasına ekleyin:

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

Aksi takdirde, bu dosyayı önemsemiyorsanız, sadece kaldırın:

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

Göz önünde bulundurulması gereken birkaç komut daha var, ancak yararlı bir şey yaptıklarını sanmıyorum:

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

1
Sonunda OSX Yosemite Vagrant ve Ubuntu 14.04'te benim için çalıştı.
Brian,

Vagrant'ın kullandığı kabuğu değiştirmen gerekebilir.
ToothlessRebel

1
Bu dosya ile uğraşmak benim için işe yarayan tek şeydi (bence kötü bir tavsiye olduğunu düşündüğüm "yönlendirme stderr" önerilerini görmezden geliyorsun). --frontend=noninteractiveDosyada tanımlanan komuttaki seçeneği geçici olarak dahil etmek için ön hazırlık aşamasından önce / sonra çift adım kullanmayı seçtim . sudo sed -i 's/\(dpkg-preconfigure\) --apt/\1 --frontend=noninteractive --apt/' /etc/apt/apt.conf.d/70debconfönce ve sudo sed -i 's/ --frontend=noninteractive//' /etc/apt/apt.conf.d/70debconfsonra.
phils

5

Bash yeniden yönlendirme stdout ve stderr için iyi çalışır.

Hata akışını yönlendirmek için aşağıdakileri kullanın:

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

Hem stdout'u (hata / uyarı olmayan mesajlar) hem de stderr'ı yeniden yönlendirmek için, şunu kullanın:

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

Bu bunun için bash'ta mevcut olan bir kısayol:

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

Veya:

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

Aşağıda, 1 numaralı dosya tanımlayıcısının stdout, 2 stderr, 3 stdin olduğunu açıkça görebiliriz.

$ 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

Bu yüzden ne yapmak istediğini söylediğin şey için, sadece verdiğim ilk emre ihtiyacın var.


1
Ben normal stdout'yu apt-get'den ekleyebilmek istiyorum. Ama beni doğru yolda tutabilirsin ... bit-
bucket'a

Gönderiyi düzenledim. En son çizgiye bakın.
BullShark
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.