Quero que meu script de relatório cron-run me notifique caso haja atualizações para meus pacotes. A maneira de fazer é apt-get
me fornecer a lista de atualizações disponíveis, mas não faça mais nada?
209
Para versões modernas, apt
existe uma opção específica para isso:
apt list --upgradable
Para o apt-get
comando antigo, o -u
switch mostra uma lista de pacotes disponíveis para atualização:
# apt-get -u upgrade --assume-no
Na apt-get
página do manual :
-u
--show-upgrade Mostra pacotes atualizados; Imprima uma lista de todos os pacotes que devem ser atualizados. Item de configuração: APT :: Get :: Show-Upgraded.
--assume-não automática "não" a todas as solicitações. <== Para impedir que ele comece a instalar
-u
é uma opção padrão deapt-get
Não é lido tão facilmente, abaixo está um liner perl one para analisar a saída do apt-get:
Isso deve gerar algo como:
Espero que ajude alguém,
fonte
column
da seguinte forma:apt-get --just-print upgrade 2>&1 | perl -ne 'if (/Inst\s([\w,\-,\d,\.,~,:,\+]+)\s\[([\w,\-,\d,\.,~,:,\+]+)\]\s\(([\w,\-,\d,\.,~,:,\+]+)\)? /i) {print "PROGRAM: $1 INSTALLED: $2 AVAILABLE: $3\n"}' | column -s " " -t
Outra opção, inspirada no enzotib:
Este comando usará o aptitude para gerar os novos pacotes e, em seguida, wc para apenas contar as linhas.
Em uma nota de rodapé, descobri que a solução do enzotib sem as aspas simples ao redor do ~ U não funcionava para mim. (Wheezy, ZSH, aptidão 0.6.8.2)
Atualização:
Com o novo apt, você pode fazer agora:
fonte
O mais fácil é:
fonte
Você pode correr
ou o não documentado
Outro método usando uma
apt-get
simulação:fonte
dist-upgrade
mas não perder alguns pacotes tão necessários para usaraptitude
.aptitude install $(apt-get -s dist-upgrade | awk '/^Inst/ { print $2 }')
fez o truque!Dê uma olhada no pacote "apticron":
apticron - Ferramenta simples para enviar e-mail sobre atualizações de pacotes pendentes
https://packages.debian.org/buster/apticron
fonte
listará as atualizações disponíveis sem realmente instalar.
O primeiro comando atualiza os arquivos de índice do pacote antes que a atualização simulada (assim -s) seja concluída. "-s" fará uma atualização simulada mostrando os pacotes que seriam instalados, mas na verdade não instalarão nada.
Pelo contrário, "-u" em vez de "-s" seria instalado após a confirmação.
fonte
-s, --simulate, --just-print, --dry-run, --recon, --no-act
, recon e run-run são meus favoritos pessoais.Eu precisava de informações completas sobre possíveis atualizações, então usei uma modificação da resposta de jasonwryan:
É uma saída simples e IMO razoavelmente formatada.
fonte
Basta filtrar a saída de
ter apenas as informações preferidas em seu log.
Provavelmente, você precisará da parte bonita depois da linha
que tem poucos espaços no começo.
fonte
Faça outro jato on-line, inspirado nesta resposta :
A saída fica assim (colorida):
Se você não quiser a descrição curta, use esta:
Resultado:
fonte
é o mais simples para emails cron; não há iteração do usuário e, se não houver atualizações, não haverá saída.
fonte
Depois de escrever um aviso para a resposta de @ jasonwryan, desejo fornecer minha própria solução:
Infelizmente, este não funciona com o debian wheezy e eu tive que verificar alguns contêineres lxc que ainda não foram atualizados. Este formulário sempre funcionará:
Finalmente, eu também queria reformatar a saída. Optei por alterar a chamada novamente (usando,
--dry-run
mas ignorando todas as saídas adicionais), porque parece mais seguro:Devoluções:
fonte
apt-check
é provavelmente o método de script mais eficiente.Uma modificação muito pequena mostra apenas as atualizações de segurança.
fonte
Como variação, uso o seguinte:
Coloque-o em um script chamado
apt-updates
e você poderá ligarapt-updates
para obter uma lista de todas as atualizações, independentemente do usuário.Você ainda precisa ligar
apt-get update
com acesso privilegiado.fonte
Aí está a
apt-show-versions
ferramenta. Para mostrar as atualizações disponíveis, execute:fonte
Eu gosto de usar isso:
Você obtém uma saída como esta:
se houver atualizações disponíveis e nenhuma, se não houver. Dessa forma, você pode simplesmente associá-lo a uma solução de monitoramento.
fonte