AskOverflow.Dev

AskOverflow.Dev Logo AskOverflow.Dev Logo

AskOverflow.Dev Navigation

  • Início
  • system&network
  • Ubuntu
  • Unix
  • DBA
  • Computer
  • Coding
  • LangChain

Mobile menu

Close
  • Início
  • system&network
    • Recentes
    • Highest score
    • tags
  • Ubuntu
    • Recentes
    • Highest score
    • tags
  • Unix
    • Recentes
    • tags
  • DBA
    • Recentes
    • tags
  • Computer
    • Recentes
    • tags
  • Coding
    • Recentes
    • tags
Início / unix / Perguntas / 463498
Accepted
Daniel F
Daniel F
Asked: 2018-08-20 05:19:23 +0800 CST2018-08-20 05:19:23 +0800 CST 2018-08-20 05:19:23 +0800 CST

Encerre e desative/remova a atualização autônoma antes que o comando retorne

  • 772

Estou tendo um problema aqui em que tento automatizar uma configuração com o Ansible.

Algumas das etapas exigem interação com apt, mas ocasionalmente recebo um erro porque a atualização autônoma foi iniciada e bloqueada no apt. Isso fará com que a cartilha pare.

Eu tentei muitas maneiras de contornar isso, sendo a mais bem-sucedida a repetição de um comando apt com falha.

Mas isso não escala, também não é 100% confiável e parece ruim.

Optei por emitir um apt -y purge unattended-upgradesdireito no início do manual. Eu também tentei apt -y remove unattended-upgrades, mas esse parece retornar enquanto ainda está no trabalho. A limpeza parece encerrar as atualizações autônomas antes de sair, que é o que eu quero.

Mas acontece que mesmo essa chamada para apt -y purge unattended-upgradespode falhar devido ao bloqueio. Então eu mudei para while [[ $(dpkg -l | grep -P "unattended-upgrades" | wc -c) -ne 0 ]]; do apt -y purge unattended-upgrades; done, mas também isso falha ocasionalmente (não consigo descobrir o porquê)

Eu preciso de um comando que, quando executado, encerrará e enterrará atualizações autônomas imediatamente, independentemente de estar em execução ou não, e garantirá que não será mais iniciado assim que o comando retornar, até que eu apt installo explicitamente novamente. Tudo bem se esse comando demorar um minuto para terminar seu trabalho.

Além disso, o sistema não tem o Python instalado, então o Ansible está apenas emitindo rawcomandos, até eu conseguir instalar o Python, que deve ser após uma chamada bem-sucedida paraapt -y update

Estou em um estado em que posso acionar atualizações autônomas facilmente, pois esta é uma VM, e assim que eu emitir um date -scomando para corrigir a data obsoleta, a atualização autônoma é iniciada. Depois de iniciar a VM, tenho alguns minutos até dateque se corrija automaticamente, o que inicia atualizações autônomas.

Isto é o que estou fazendo agora:

- name: Disable autoupdate (part 1 of 2)
  raw: sed -i /Update/s/"1"/"0"/ /etc/apt/apt.conf.d/10periodic && sync

- name: Disable autoupdate (part 2 of 2)
  raw: echo 'APT::Periodic::Unattended-Upgrade "0";' >> /etc/apt/apt.conf.d/10periodic && sync

- name: Terminate any active autoupdate
  raw: ps -A | grep unattended-upgrades | awk '{print $1}' | xargs -r kill -15 $1

- name: Terminate any active dpkg
  raw: ps -A | grep dpkg | awk '{print $1}' | xargs -r kill -15 $1

- name: Allow dpkg to recover
  raw: dpkg --configure -a

- name: Purge autoupdate
  raw: apt -y purge unattended-upgrades    

- name: Update apt cache
  raw: apt -y update

- name: If needed, install Python
  raw: test -e /usr/bin/python || apt -y install python

Terminar o dpkg é o que me assusta. Tudo o que é executado em uma nova instalação do Ubuntu Server 18.04.1


Aqui está a solução criada usando a resposta aceita:

https://stackoverflow.com/a/51919678/277267

ubuntu ansible
  • 1 1 respostas
  • 16390 Views

1 respostas

  • Voted
  1. Best Answer
    sourcejedi
    2018-08-20T05:38:19+08:002018-08-20T05:38:19+08:00

    Aparentemente unattended-upgradesé executado a partir de uma das unidades systemd apt-daily.service/apt-daily-upgrade.service. (Estes, por sua vez, são acionados por unidades systemd .timer, com os mesmos nomes).

    Você pode tentar esperar pelas unidades do systemd da seguinte forma:

    systemd-run --property="After=apt-daily.service apt-daily-upgrade.service" --wait /bin/true
    

    Isso independe de você querer enviar SIGTERM para dpkgou apt-getou algo para tentar fazer com que eles terminem mais rápido. killapenas transmite um sinal; não espera por nada. Em princípio, você sempre precisa esperar um pouco antes de poder usar o recurso liberado.

    • 12

relate perguntas

  • Torne as configurações do teclado Apple persistentes em ../hid_apple/parameters/

  • traçar gráfico 2D com pontos de um arquivo

  • Como faço para verificar se estou usando 9.9.9.9 para DNS?

  • Instale várias distribuições Linux em paralelo

  • O OpenVPN auto-compilado não inicia a partir do systemd

Sidebar

Stats

  • Perguntas 205573
  • respostas 270741
  • best respostas 135370
  • utilizador 68524
  • Highest score
  • respostas
  • Marko Smith

    Como exportar uma chave privada GPG e uma chave pública para um arquivo

    • 4 respostas
  • Marko Smith

    ssh Não é possível negociar: "nenhuma cifra correspondente encontrada", está rejeitando o cbc

    • 4 respostas
  • Marko Smith

    Como podemos executar um comando armazenado em uma variável?

    • 5 respostas
  • Marko Smith

    Como configurar o systemd-resolved e o systemd-networkd para usar o servidor DNS local para resolver domínios locais e o servidor DNS remoto para domínios remotos?

    • 3 respostas
  • Marko Smith

    Como descarregar o módulo do kernel 'nvidia-drm'?

    • 13 respostas
  • Marko Smith

    apt-get update error no Kali Linux após a atualização do dist [duplicado]

    • 2 respostas
  • Marko Smith

    Como ver as últimas linhas x do log de serviço systemctl

    • 5 respostas
  • Marko Smith

    Nano - pule para o final do arquivo

    • 8 respostas
  • Marko Smith

    erro grub: você precisa carregar o kernel primeiro

    • 4 respostas
  • Marko Smith

    Como baixar o pacote não instalá-lo com o comando apt-get?

    • 7 respostas
  • Martin Hope
    rocky Como exportar uma chave privada GPG e uma chave pública para um arquivo 2018-11-16 05:36:15 +0800 CST
  • Martin Hope
    Wong Jia Hau ssh-add retorna com: "Erro ao conectar ao agente: nenhum arquivo ou diretório" 2018-08-24 23:28:13 +0800 CST
  • Martin Hope
    Evan Carroll status systemctl mostra: "Estado: degradado" 2018-06-03 18:48:17 +0800 CST
  • Martin Hope
    Tim Como podemos executar um comando armazenado em uma variável? 2018-05-21 04:46:29 +0800 CST
  • Martin Hope
    Ankur S Por que /dev/null é um arquivo? Por que sua função não é implementada como um programa simples? 2018-04-17 07:28:04 +0800 CST
  • Martin Hope
    user3191334 Como ver as últimas linhas x do log de serviço systemctl 2018-02-07 00:14:16 +0800 CST
  • Martin Hope
    Marko Pacak Nano - pule para o final do arquivo 2018-02-01 01:53:03 +0800 CST
  • Martin Hope
    Kidburla Por que verdadeiro e falso são tão grandes? 2018-01-26 12:14:47 +0800 CST
  • Martin Hope
    Christos Baziotis Substitua a string em um arquivo de texto enorme (70 GB), uma linha 2017-12-30 06:58:33 +0800 CST
  • Martin Hope
    Bagas Sanjaya Por que o Linux usa LF como caractere de nova linha? 2017-12-20 05:48:21 +0800 CST

Hot tag

linux bash debian shell-script text-processing ubuntu centos shell awk ssh

Explore

  • Início
  • Perguntas
    • Recentes
    • Highest score
  • tag
  • help

Footer

AskOverflow.Dev

About Us

  • About Us
  • Contact Us

Legal Stuff

  • Privacy Policy

Language

  • Pt
  • Server
  • Unix

© 2023 AskOverflow.DEV All Rights Reserve