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

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

나는 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]더 이상 or 에 대해 걱정할 필요가 없지만 Press [ENTER] to continue or ctrl-c to cancel adding it문제는 wireshark다음과 같은 대화형 프롬프트에 응답해야 한다는 것입니다.

Wireshark 프롬프트

그러한 강제 개입을 피하는 방법은 무엇입니까?

답변1

구성데브 컨퍼런스데이터 베이스:

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

유용할 수 있는 리소스

관련 정보