“[Y / n]을 계속 하시겠습니까?”프롬프트없이 apt로 패키지를 설치하는 방법은 무엇입니까?


답변:


86
sudo apt-get install -y whatever

매뉴얼 페이지 ( man apt-get)에서 :

 -y, --yes, --assume-yes

           Automatic yes to prompts; assume "yes" as answer to all prompts and
           run non-interactively. If an undesirable situation, such as
           changing a held package, trying to install a unauthenticated
           package or removing an essential package occurs then apt-get will
           abort. Configuration Item: APT::Get::Assume-Yes.

9
(위험하게 보관하는 방법)
user2413

대단히 감사합니다! 그 맨 페이지를 더 자주 사용해야합니다. :)
누가

2
그래서 그들은 거기에 있습니다 @KingShimkus;)
Rinzwind

5
sudo apt-get install -yeah whatever ...
BoJack Horseman

이제 경우에만이이 도커 패키지를 업그레이드하는 일> <당신은 이전에 부두 노동자를 업그레이드하지 않은 경우, 여기 당신이 사용하는 경우에도 터미널에서-팝업 무엇의 이미지입니다. --yes: Imgur 그 패키지를 업데이트하는 동안 상호 작용을 강제하기 때문에 그것은 매우 짜증나 .
스펜서 D

15

apt-get의 경우 -y또는 --assume-yes@rinzwind가 설명한대로 잘 작동하면 이것이 가장 좋은 대답이라고 가정합니다. 이러한 대화식 관리 작업에는 유사한 명령이 있습니다.

이 작업을 수행하는 또 다른 일반적인 방법은 다음과 같습니다.

 $ echo "y" | sudo apt-get install edamame_biscuit

(edamame-biscuit는 설치하려는 (만들어진) 패키지이고, "y"는 합법적 인 응답으로 간주됩니다. "yes"또는 필요에 따라 다른 텍스트로 대체하십시오.)

이 방법의 '기능'은 대화식 프롬프트를 하나만 잘못 가정하면 이것이 중단된다는 것입니다. 원하지 않는 프롬프트가 더있을 수 있습니다. 예라고 대답하지 않으려는 경우 시스템을 묻지 않고 상황을 피할 수 있습니다.


13
또한 yes | sudo apt-get install edamame-biscuit. 예는 "yes"라는 단어를 출력으로 스팸 처리하는 명령입니다. 필요에 따라 다른 텍스트를 출력 할 수도 있습니다. 맨 페이지를 참조하십시오.
Kroltan

14
@Kroltan이 yes명령 (기본적으로) y은 파이프 버퍼를 채우는 데 필요한만큼 문자 다음에 줄 바꿈 문자를 출력합니다 . 실제로 단어를 인쇄하려면 yes명령을 사용해야합니다 yes yes.
Jonathan Callen

3
yes, 내 실수를 용서해라
Kroltan

4
@Braiam 나는 그것이 요점이라고 생각합니다. 그래서 누군가가 단지 자신의 껍질에 이것을 붙여 넣으면 아무것도하지 않습니다.
Kroltan

2
특히 "이 방법의 '기능'부분은 대화식 프롬프트를 하나만 잘못 가정하면 이것이 중단 될 것입니다." 모든 것에 스팸 메일을 보내는 것은 매우 위험 할 수 있습니다.
BeowulfNode42

4

우선 , 메시지가 나타나는 이유를 이해 하십시오. 실제로 패키지에 아직 설치하지 않았거나 명시 적으로 설치하라는 종속성이없는 경우 apt는 절대 묻지 않습니다.

➜  ~  sudo apt-get -qq install xfce4-screenshooter
Selecting previously unselected package xfce4-screenshooter.
(Reading database ... 296146 files and directories currently installed.)
Preparing to unpack .../xfce4-screenshooter_1.8.1-2_amd64.deb ...
Unpacking xfce4-screenshooter (1.8.1-2) ...
Processing triggers for hicolor-icon-theme (0.13-1) ...
Processing triggers for man-db (2.6.7.1-1) ...
Processing triggers for gnome-menus (3.13.3-1) ...
Processing triggers for desktop-file-utils (0.22-1) ...
Processing triggers for mime-support (3.56) ...
Setting up xfce4-screenshooter (1.8.1-2) ...

패키지에 의존하는 패키지를 설치하려면 언급하지 않았지만 다음과 같이 묻습니다.

➜  ~  sudo apt-get -q install avis
Reading package lists...
Building dependency tree...
Reading state information...
The following extra packages will be installed:
  libjzlib-java libmina-java libslf4j-java
Suggested packages:
  libmina-java-doc libspring-beans-java libcommons-logging-java
  liblog4j1.2-java
The following NEW packages will be installed:
  avis libjzlib-java libmina-java libslf4j-java
0 upgraded, 4 newly installed, 0 to remove and 14 not upgraded.
Need to get 720 kB of archives.
After this operation, 1,258 kB of additional disk space will be used.
Do you want to continue? [Y/n] 

그럼에도 불구하고 패키지를 설치하고 싶다고 암시 적으로 말하지 않는지 묻지 않습니다.

➜  ~  apt-get -q install avis libjzlib-java libmina-java libslf4j-java
Reading package lists...
Building dependency tree...
Reading state information...
Suggested packages:
  libmina-java-doc libspring-beans-java libcommons-logging-java
  liblog4j1.2-java
The following NEW packages will be installed:
  avis libjzlib-java libmina-java libslf4j-java
0 upgraded, 4 newly installed, 0 to remove and 14 not upgraded.
Inst libjzlib-java (1.1.3-1 Debian:testing [all])
Inst libslf4j-java (1.7.7-1 Debian:testing [all])
Inst libmina-java (1.1.7.dfsg-11 Debian:testing [all])
Inst avis (1.2.2-2 Debian:testing [all])
Conf libjzlib-java (1.1.3-1 Debian:testing [all])
Conf libslf4j-java (1.7.7-1 Debian:testing [all])
Conf libmina-java (1.1.7.dfsg-11 Debian:testing [all])
Conf avis (1.2.2-2 Debian:testing [all])

그렇다면 결정적으로 요구하지 않는 방법은 무엇입니까? Rizwind의 답변을 통해 임시 및 스크립팅 솔루션 (실제로 해당 옵션이 스크립트에서 더 많이 사용됨)을 다루어야합니다. 대신 apt.conf파일을 수정 하고 다음을 추가 할 수 있습니다.

APT::Get::Assume-Yes

이와 같은 것으로 충분합니다.

echo 'APT::Get::Assume-Yes;' | sudo tee -a /etc/apt/apt.conf.d/00Do-not-ask

이렇게하면 다음과 같이 확인해야하는 더 심각한 다른 프롬프트가 허용되지 않습니다 .

➜  ~  sudo apt-get install sonar
WARNING: The following packages cannot be authenticated!
  sonar
Install these packages without verification? [y/N] 

yes | ...이 경고는 무시되므로을 (를) 사용하지 않는 것이 좋습니다 .


"경고 : 다음 패키지를 인증 할 수 없습니다!"에 대해 어떻게해야합니까? Docker 이미지 ( python:3.6-slim)에 대해 이것을 얻습니다 . 그것에 대해 별도의 질문을해야합니까?
Martin Thoma

@MartinThoma, 일반적으로 업데이트되지 않은 패키지 목록에 문제가 있습니다. 설치하기 전에 apt-get update를 실행하십시오. 그래도 메시지가 제거되지 않으면 도커 이미지를 생성 한 방법에 따라 가능한 한 많은 정보를 질문하십시오.
브라이 암

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