apt-get 업그레이드 자동 재시작 서비스

apt-get 업그레이드 자동 재시작 서비스

서버 설치를 위한 무인 스크립트가 있습니다. 스크립트 시작 부분에는 sudo apt-get dist-upgrade --yes. dist 업그레이드에는 서비스 다시 시작을 요청하는 불쾌한 사용자 입력 화면이 있습니다.
여기에 이미지 설명을 입력하세요

서비스 재시작을 자동으로 수락하거나 이 화면을 비활성화할 수 있습니까? 내 전체 대본이 깨졌습니다. 또한 업데이트할 때 어느 시점에 서버가 중단될 수도 있습니다...

apt-get 업그레이드와 동일한 결과

편집: 나는 성공하지 못했습니다:

#!/bin/bash
sudo apt-get update
sudo apt-get remove apt-listchanges --assume-yes --force-yes &&

#using export is important since some of the commands in the script will fire in a subshell
export DEBIAN_FRONTEND=noninteractive &&
export APT_LISTCHANGES_FRONTEND=none &&

#lib6c was an issue for me as it ignored the DEBIAN_FRONTEND environment variable and fired a prompt anyway. This should fix it
echo 'libc6 libraries/restart-without-asking boolean true' | debconf-set-selections &&

echo "executing wheezy to jessie" &&
find /etc/apt -name "*.list" | xargs sed -i '/^deb/s/wheezy/jessie/g' &&

echo "executing autoremove" &&
sudo apt-get -fuy --force-yes autoremove &&

echo "executing clean" &&
sudo apt-get --force-yes clean &&

echo "executing update" &&
sudo apt-get update &&

echo "executing upgrade" &&
sudo apt-get --force-yes -o Dpkg::Options::="--force-confold" --force-yes -o Dpkg::Options::="--force-confdef" -fuyq upgrade &&

echo "executing dist-upgrade" &&
sudo apt-get --force-yes -o Dpkg::Options::="--force-confold" --force-yes -o Dpkg::Options::="--force-confdef" -fuyq dist-upgrade

답변1

다른 답변은 needrestart모두 건너 뛰었습니다.

하지만 환경변수NEEDRESTART_MODE모드를 지정할 수 있습니다. 그리고 "(a)자동으로"를 선택하면 needrestart프롬프트에 의해 차단되지 않고 이점을 누릴 수 있습니다 .

sudo NEEDRESTART_MODE=a apt-get dist-upgrade --yes

답변2

다른 사람들이 언급했듯이 이 경우의 문제는 needrestart현재 Ubuntu의 apt-get 업그레이드 프로세스의 일부인 명령에 있습니다(구체적으로 제가 사용하고 있는 22.04). 기본적으로 이는 스크립트를 중단시키는 "대화형" 모드로 설정됩니다.

/etc/needrestart/needrestart.conf이 동작을 변경하려면 파일을 편집하여 다음 줄을 변경하면 됩니다 .

#$nrconf{restart} = 'i';

에게

$nrconf{restart} = 'a';(서비스를 자동으로 다시 시작하려는 경우) 또는 $nrconf{restart} = 'l';단순히 다시 시작해야 하는 서비스를 나열합니다.

스크립트를 실행 중이고 vim과 같은 대화형 편집기를 사용하지 않고 이 편집을 수행하려면 sed다음과 같이 를 사용하면 됩니다.

sudo sed -i 's/#$nrconf{restart} = '"'"'i'"'"';/$nrconf{restart} = '"'"'a'"'"';/g' /etc/needrestart/needrestart.conf

구성 파일의 작은따옴표와 sed가 작은따옴표를 처리하는 방식 때문에 보기 흉해 보이지만 작동합니다. 더 나은 접근 방식이 있으면 의견을 남겨주세요.

답변3

sed를 사용하거나 기본 구성을 편집하는 대신 /etc/needrestart/conf.d/no-prompt.conf에 고유한 구성 파일을 추가하세요.

$nrconf{restart} = 'a';

답변4

대안적으로, 나는생각하다당신은 제거 할 수 있습니다needrestart패키지 자체.

sudo apt-get remove needrestart

Ubuntu 22.04에서 AWS EC2 프로비저닝에 이것을 사용하고 있습니다. 어떤 이유로든 export DEBIAN_FRONTEND=noninteractive작동하지 않는 것 같았습니다.

관련 정보