Atualizar / atualizar o Debian e pular todas as interações

1

Estou executando um pequeno script para atualizar e atualizar algumas máquinas Debian, mas desde algumas semanas ele sempre parou devido a algumas "notícias" que o terminal está mostrando. Ao atualizar manualmente eu vejo um "fullscreen" (encontrar screenshot abaixo) de algum software, o que força a pressionar "q". Eu não quero mudar nenhum software, então eu gostaria de encontrar uma solução, que permite apenas pular todas as telas interativas, enquanto atualizo.

Geralmente eu estava bem usando:

sudo apt-get update -y 
sudo apt-get upgrade -y

Depois que percebi que o processo de atualização é interrompido sem qualquer tempo limite, também tentei usar a solução desse postar :

sudo DEBIAN_FRONTEND=noninteractive apt-get -y upgrade

mas infelizmente com o mesmo resultado. Alguém tem uma solução para apenas atualizar uma máquina sem interrupções?

UPDATE:

Primeiroeuacabeideexecutar:

DEBIAN_FRONTEND=noninteractive

Secondaryeditouoarquivo/etc/dpkg/dpkg.cfgpara:

#dpkgconfigurationfile##Thisfilecancontaindefaultoptionsfordpkg.Allcommand-line#optionsareallowed.Valuescanbespecifiedbyputtingthemafter#theoption,separatedbywhitespaceand/oran'='sign.##Donotenabledebsig-verifybydefault;sincethedistributionisnotusing#embeddedsignatures,debsig-verifywouldrejectallpackages.no-debsig#Logstatuschangesandactionstoafile.log/var/log/dpkg.logforce-confoldforce-confdef

Finalmenteeuexecutei:

sudoapt-getupgrade-yq

Issofezotruquesobre"pressione q para sair" - ótimo!

Acho que também está trabalhando para combinar os comandos em execução:

DEBIAN_FRONTEND=noninteractive
sudo apt-get -o Dpkg::Options::="--force-confnew --force-confdef" --force-yes -yq upgrade

Infelizmente, outro problema semelhante aparece agora:

Também tentar editar /etc/apt/listchanges.conf não funcionou, infelizmente:

[apt]
frontend=none
email_address=root
confirm=0
save_seen=/var/lib/apt/listchanges.db
which=news

SOLUÇÃO :

Eu notei (desculpe se isso é óbvio para um usuário Linux avançado) que o bash age de forma diferente, quando você executa um comando via script do que inserindo diretamente o comando no console.

Em suma, foi suficiente para minha solução de script adicionar o parâmetro -yp e definir o DEBIAN_FRONTEND . Para garantir, eu também editei o arquivo /etc/dpkg/dpkg.cfg .

#!/bin/bash
DEBIAN_FRONTEND=noninteractive
export DEBIAN_FRONTEND
apt-get -yq update
apt-get -yq upgrade
    
por user3191334 26.12.2016 / 23:33

2 respostas

4

você deve definir DEBIAN_FRONTEND=noninteractive , isso impedirá que os prompts do debconf apareçam.

Depois disso, adicione force-confold e force-confdef ao seu arquivo /etc/dpkg/dpkg.cfg . então use a opção -y

sudo apt-get -y update && sudo apt-get -y upgrade

ou use este comando

apt-get -o Dpkg::Options::="--force-confnew --force-confdef" --force-yes -y upgrade

e, se não funcionar, tente

apt-get -o Dpkg::Options::="--force-confnew" --force-yes -y upgrade
    
por 27.12.2016 / 00:28
1

As informações de atualização são dadas por apt-listchanges . Se você nunca quiser ver esses detalhes, você pode remover o pacote completamente. Caso contrário, você pode configurá-lo usando /etc/apt/listchanges.conf ; no seu caso,

frontend=mail

ou

frontend=none

evitará que a instalação seja interrompida.

( apt-listchanges deve fazer a coisa certa nessas circunstâncias, então deve ser possível consertá-lo de outras maneiras para que ele ainda mostre detalhes de atualização no modo interativo. Em particular, você poderia tentar adicionar o -q opção para apt-get .)

Note que simplesmente executando

DEBIAN_FRONTEND=noninteractive

não alterará nada, você precisa garantir que ele acabe no ambiente dos processos apt-get :

export DEBIAN_FRONTEND
    
por 27.12.2016 / 11:54