쉘 스크립트에서 설치하는 동안 대화형 프롬프트에 대한 응답을 선택하는 방법

쉘 스크립트에서 설치하는 동안 대화형 프롬프트에 대한 응답을 선택하는 방법

저는 Ubuntu PC에 필요한 모든 애플리케이션을 한 번에 설치하기 위해 쉘 스크립트를 작성하고 있습니다(산책하거나 다른 일을 할 수 있는 동안). -y명령문 끝에 추가하는 대부분의 애플리케이션에서는 apt-get install사용자 개입이 필요하지 않도록 잘 작동했습니다. 내 스크립트는 다음과 같습니다.

#!/bin/bash
add-apt-repository ppa:webupd8team/sublime-text-3 -y
apt-get update -y
apt-get upgrade -y
apt-get install synaptic -y
apt-get install wireshark -y

Do you want to continue? [Y/n]더 이상 또는 에 대해 걱정할 필요가 없지만 Press [ENTER] to continue or ctrl-c to cancel adding it문제는 에 있으며 wireshark아래와 같이 대화형 프롬프트에 응답해야 합니다.

Wireshark 프롬프트

이 의무적인 개입을 어떻게 피할 수 있습니까?

답변1

구성debconf데이터 베이스:

echo "wireshark-common wireshark-common/install-setuid boolean true" | sudo debconf-set-selections

그런 다음 설치하십시오.와이어샤크:

sudo DEBIAN_FRONTEND=noninteractive apt-get -y install wireshark

다음의 출력을 억제할 수도 있습니다.적절한. 이 경우:

sudo DEBIAN_FRONTEND=noninteractive apt-get -y install wireshark > /dev/null

답변2

apt/dpkg 시스템에는 무인 또는 비대화형 설치를 제공하는 기능이 있습니다.

DEBIAN_FRONTEND여기에는 변수를 플래그로 설정 noninteractive하고 사용하는 작업이 포함됩니다 -y. 예를 들어:

export DEBIAN_FRONTEND=noninteractive
apt-get -y install [packagename]

오류가 발생하면 실제로 비대화형 설치를 수행하고 있음을 q보다 강력하게 확신시키기 위해 옵션 을 설정해야 할 수도 있습니다 . dpkgDEBIAN_FRONTEND=noninteractive apt-get -yq install [packagename]

어떤 경우에는 동일한 스크립트/셸 프로세스에서 나중에 설치하는 일부 패키지에 대한 프롬프트를 따르는 것이 더 쉬울 수 있습니다. 이 경우 변수 내보내기를 취소할 수 있습니다 DEBIAN_FRONTEND.

unset DEBIAN_FRONTEND

구성 옵션을 미리 설정하려면 debconf-utils다음 명령을 사용하면 유용합니다 debconf-get-selections.

sudo apt-get install debconf-utils

유용할 수 있는 리소스

관련 정보