serviços de reinicialização automática do apt-get upgrade

serviços de reinicialização automática do apt-get upgrade

Eu tenho um script autônomo para instalação de servidores. No início do script existe um arquivo sudo apt-get dist-upgrade --yes. A atualização dist tem uma tela de entrada do usuário desagradável no final, solicitando a reinicialização dos serviços:
insira a descrição da imagem aqui

É possível aceitar automaticamente reinicializações de serviço ou desativar esta tela? Isso quebra todo o meu roteiro. Também tenho medo que isso possa deixar meu servidor travado em algum momento durante a atualização...

mesmo resultado com apt-get upgrade

edit: tentei sem sucesso:

#!/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

Responder1

Outras respostas simplesmente foram ignoradas needrestart.

Mas a variável de ambienteNEEDRESTART_MODEpermite especificar um modo. E ao escolher "(a)automaticamente", você pode se beneficiar needrestartsem ser bloqueado pelo prompt:

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

Responder2

Como outros mencionaram, o problema neste caso está no needrestartcomando, que agora faz parte do processo de atualização do apt-get no Ubuntu (especificamente 22.04, que é o que estou usando). Por padrão, está definido para o modo "interativo", que causa a interrupção dos scripts.

Para alterar esse comportamento, podemos editar o /etc/needrestart/needrestart.confarquivo, alterando a linha:

#$nrconf{restart} = 'i';

para

$nrconf{restart} = 'a';(se quisermos reiniciar os serviços automaticamente) ou $nrconf{restart} = 'l';simplesmente listar os serviços que precisam ser reiniciados.

Se você estiver executando um script e quiser fazer esta edição sem usar um editor interativo como o vim, você pode fazer isso usando sedalgo como:

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

Parece feio por causa das aspas simples no arquivo de configuração e como o sed lida com aspas simples, mas funciona. Por favor, deixe um comentário se você tiver uma abordagem mais bonita.

Responder3

Em vez de usar sed ou editar a configuração principal, adicione seu próprio arquivo de configuração em /etc/needrestart/conf.d/no-prompt.conf:

$nrconf{restart} = 'a';

Responder4

Alternativamente, eupensarvocê pode remover oneedrestartpacote em si.

sudo apt-get remove needrestart

Estou usando isso para provisionamento AWS EC2 no Ubuntu 22.04. Por alguma razão, export DEBIAN_FRONTEND=noninteractivenão pareceu funcionar.

informação relacionada