
서버 설치를 위한 무인 스크립트가 있습니다. 스크립트 시작 부분에는 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
작동하지 않는 것 같았습니다.