나는에 대한 프로비저닝 스크립트를 구축하고 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에 오류가 발생합니다.
아무도 원인이 될 수 있거나 경고를 억제하는 방법을 알고 있습니다.
답변
apt-get
호출 하기 전에 프로비저닝 스크립트에 다음을 넣어 오류 메시지가 사라졌습니다 .
export DEBIAN_FRONTEND=noninteractive
이것은 debconf
대화식 입력을 전혀 기대하지 않는 프론트 엔드를 사용하여 액세스조차 시도하지 못하게합니다 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
프로비저닝에 원치 않는 시간이 추가 됩니다.
답변
이 명령을 실행하십시오 :
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
답변
배쉬 리디렉션은 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
그래서 당신이하고 싶은 말에 대해, 내가 준 첫 명령 만 있으면됩니다.