apt-get 설치를 덜 시끄럽게하려면 어떻게해야합니까?


128

를 사용 apt-get install -qq mono-devel하면 도움말에 따라 오류를 제외하고는 조용 할 것으로 예상됩니다.

-qq No output except for errors

대신 나는 얻는다 :

Extracting templates from packages: 100%
Selecting previously unselected package binfmt-support.
(Reading database ... 84711 files and directories currently installed.)
Unpacking binfmt-support (from .../binfmt-support_2.0.8_i386.deb) ...
Selecting previously unselected package cli-common.
Unpacking cli-common (from .../cli-common_0.8.2_all.deb) ...
Selecting previously unselected package libgdiplus.
Unpacking libgdiplus (from .../libgdiplus_2.10-3_i386.deb) ...
Selecting previously unselected package libmono-2.0-1.
Unpacking libmono-2.0-1 (from .../libmono-2.0-1_2.10.8.1-1ubuntu2.2_i386.deb) ...
Selecting previously unselected package libmono-2.0-dev.
Unpacking libmono-2.0-dev (from .../libmono-2.0-dev_2.10.8.1-1ubuntu2.2_i386.deb) ...
Selecting previously unselected package libmono-corlib4.0-cil.
Unpacking libmono-corlib4.0-cil (from .../libmono-corlib4.0-cil_2.10.8.1-1ubuntu2.2_all.deb) ...
Selecting previously unselected package libmono-system-xml4.0-cil.
Unpacking libmono-system-xml4.0-cil (from .../libmono-system-xml4.

그리고 ...

실제로, 수백 라인 분량의 출력. 와 일치하지 않는 것 같습니다 no output except for errors.

실제로 설치에 오류가있는 경우 에만apt-get install 인쇄하려면 어떻게해야 합니까?


#이 조용한 레벨 인 -q = #를 사용해 보셨습니까? (매뉴얼에 있습니다.) 이것에 대해 버그 보고서를 작성할 수 있습니다.
Paddy Landau

@PaddyLandau 나는 정말로했다. 이전에 선택되지 않은 패키지를 선택하는 것에 대해 왜 이야기하는지 또는 그것이 중요한 이유를 모르겠으며 travis-ci 에서 이것에 대해 실행중인 vms의 상태와 관련이 있는지 확실하지 않습니다 . 그러나 대답은 잘 작동했습니다.
jbtule 2013

"이전에 선택되지 않은 패키지 선택"은 단순히 패키지 관리자가 종속성을 충족시키는 데 필요한 패키지를 포함하고 있음을 의미합니다. 앞에서 쓴 것처럼 --quiet옵션이 제대로 작동하지 않는 것으로 보이는 버그 보고서를 작성하려고 할 수 있습니다.
Paddy Landau

우분투 15.04 20150709.에서 같은 증상을보고 불행 해요
로이드 Dewolf

2009 dpkg 문제 보고서 : bugs.debian.org/cgi-bin/bugreport.cgi?bug=539617 과 관련이있는 것 같습니다 .
Lloyd Dewolf 21시 18 분

답변:


83

apt-get의 매뉴얼 페이지는 다음과 같습니다.

NAME
       apt-get - APT package handling utility -- command-line interface

SYNOPSIS
       apt-get [-asqdyfmubV] [-o=config_string] [-c=config_file] [-t=target_release]
               [-a=architecture] {update | upgrade | dselect-upgrade | dist-upgrade |
               install pkg [{=pkg_version_number | /target_release}]...  | remove pkg...  |
               purge pkg...  | source pkg [{=pkg_version_number | /target_release}]...  |
               build-dep pkg [{=pkg_version_number | /target_release}]...  |
               download pkg [{=pkg_version_number | /target_release}]...  | check | clean |
               autoclean | autoremove | {-v | --version} | {-h | --help}}

-q또는 -qq플래그는 가야 이전 과 같이 명령 :

apt-get -qq upgrade


3
이것이 정답입니다! 모든 실제 구현은 프롬프트를 보존해야합니다. 올바르게 사용하면 -q절대적으로 작동합니다 ( "애니메이션"출력 없음) -qq(오류 이외의 출력 없음). 공감하십시오!
Charney Kaye

27
아니요, 작동하지 않습니다. -qq설치 명령 이전 에도 데이터베이스 읽기에서 메시지 압축 풀기 및 설정에 이르기까지 여전히 많은 쓰레기가 발생합니다.
CrazyCasta 2016 년

2
글쎄, 난 해봤 sudo apt-get -qq -y install mercurial, sudo apt-get install -qq -y mercurial, sudo apt-get -qq install -qq -y mercurial와 관련된 다른 유사 더욱 Q의 (I이 작동 할 제안 모든 문서를 볼 수 없습니다하지만. 내가 구글 클라우드에 데비안 제시를하고 있는데 BTW (8). 나는 또한 시도했다 게츠의 응답하고 그 중 하나가 작동하지 않는 것으로는 내가 차이를 인식하지 않는다는 의미는 작동하지 않습니다..
CrazyCasta

3
이것은 Docker 컨테이너로 실행되는 Ubuntu 16.04.1입니다. 내 생각에는 메시지가 실제로에서 온 것으로 추측 dpkg됩니다 apt-get. 명령은 apt-get -qq update && apt-get -qq upgrade && apt-get -qq install build-essential입니다. gist.github.com/stefanlasiewski/…
Stefan Lasiewski

3
Docker에는 두 가지 대안 &&이 있습니다. 옵션 2는 아마도이 버그가있는 동안 최선의 방법 일 것입니다.
Mike

54

간단한 리디렉션이이 작업을 수행 할 수 있습니다. 그것은 정확히 당신이 생각한 것이 아니며, 확실하지만 지옥이 작동하는 것처럼 확실합니다 :)

요컨대, > /dev/null모든 것을 stdout무 (無) 로 리디렉션하고자하는 명령의 끝에서 깨어 난다. 출력 된 내용 stderr은 여전히 ​​콘솔에 표시됩니다.

$ sudo apt-get update > /dev/null
[sudo] password for oli: 
$ 

정크 없음! 그리고 우리가 어리 석고 무언가를 깨 뜨리면 어떻게 될까요?

$ apt-get cheese > /dev/null
E: Invalid operation cheese
$

7
프롬프트가 표시되면 약간의 문제가됩니다.
l0b0

1
이것이 스크립트의 일부인 경우 앞에을 두지 않을 것 sudo입니다 apt-get. 당신은 것 sudo대신 스크립트를 실행하는 경우.
Xion

3
@Oli 시스템에 불이 붙지 않을 것이라고 확신한다면 언제든지 할 수 sudo apt-get upgrade -qq --force-yes > /dev/null있습니다. WulfHart가 말했듯이을 -qq암시 -y하고 --force-yes거의 모든 것을 쟁기로 만듭니다.
JamesTheAwesomeDude

2
@Vorac 아니요 리디렉션 중입니다 stdout(오류 확인은 바람직한 것입니다. IMO).
Oli

3
이것은 질문에 대한 답이 아닙니다. 해결 방법입니다.
Charney Kaye

42

우리는 같은 문제에 직면했다. apt-get install -qq대부분의 출력을 제거하지만 성가신 "(Reading database ...")는 계속 유지됩니다.

우리는 apt의 소스를 살펴보고 apt가 포크 한 dpkg에 의해 출력이 생성된다는 것을 발견했습니다. 그런 다음 dpkg의 소스는 isatty (1)이 true 일 때만 성가신 출력이 발생한다는 것을 보여줍니다. 이것은 포크가 파이프 대신 pty를 사용하는 경우에만 해당됩니다. apt로 돌아가서 문서화되지 않은 구성 변수가있어 파이프 대신 pty를 사용하여 문제를 해결할 수 있습니다.

apt-get install -qq -o=Dpkg::Use-Pty=0 <packages>

다른 사람들에게 도움이 될 것으로 기대합니다.


2
실제로 이것은 완전한 정답입니다. 또한 single -q로 apt-get을 실행 하고 출력을 볼 수 있으며 성가신 "데이터베이스 읽기"가 표시되지 않습니다.
valodzka

1
나는 gcloud debian jessie (8)에서 이것을 시도하고 있으며 여전히 데이터베이스 줄을 읽고 줄을 풀고 설정합니다.
CrazyCasta 2016 년

3
이 답변은 Ubuntu 18.04에서는 작동하지 않습니다.
Amedee Van Gasse

1
여전히 많은 선발 / 준비 / 설정 라인이 있습니다.
hayd

1
-o=Dpkg::Use-Pty=0우분투 18.04에 완벽한했다. 5 %마다 진행률이 업데이트되는 여러 데이터베이스 대신 "읽기 데이터베이스"가 하나만 표시됩니다.
wisbucky

2

당신이 볼 수 있듯이 여기여기에
당신은 할 수 있습니다 :

export DEBIAN_FRONTEND=noninteractive
apt-get -yq install [packagename]
export DEBIAN_FRONTEND=dialog

또는 한 줄 :

DEBIAN_FRONTEND=noninteractive apt-get -yq install [packagename]
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.