Como posso executar atualizações automaticamente de forma responsável no Arch Linux?

Como posso executar atualizações automaticamente de forma responsável no Arch Linux?

Sou um pouco novato no Arch Linux e ainda estou me acostumando com alguns de seus paradigmas. Venho com muitos hábitos de outra distro que era um pouco mais estruturada e, de certa forma, previsível.

Uma coisa que eu gostaria de fazer com alguns sistemas¹ é habilitar um cron job para fazer atualizações automáticas de todos os pacotes do sistema. Parece que seria muito fácil, exceto que eu também quero algum feedback significativo do sistema me contando como as coisas aconteceram, que não fosse tão detalhado a ponto de acabá-lo ignorando até descobrir que o sistema está funcionando mal.

  • A saída completa de pacmané desnecessária. Não me importa quanto tempo os downloads demoraram ou se está na atualização 46 de 53.
  • Na maioria das vezes não me importo com sucessos.
  • Eu me importo com erros. Se uma atualização falhar, quero saber sobre isso e quaisquer mensagens de erro específicas devem ser corrigidas.
  • Eu me importo com os "avisos" emitidos durante a instalação. Por exemplo, a atualização do systemd de hoje dizia:

    :: coredumps are no longer sent to the journal by default. To re-enable:  
    echo >/etc/sysctl.d/50-coredump.conf \  
        "kernel.core_pattern=|/usr/lib/systemd/systemd-coredump %p %u %g %s %t %e"
    

    Ou o sistema de arquivos produziu isto:

    warning: /etc/group installed as /etc/group.pacnew  
    warning: /etc/passwd installed as /etc/passwd.pacnew  
    warning: /etc/shadow installed as /etc/shadow.pacnew
    

    Esta última categoria foi o que me levou a fazer esta pergunta porque parece que são muito inconsistentes em todo o conjunto de pacotes. Alguns deles parecem ser gerados por post_upgrade(), outros por install(), etc. Às vezes eles são gravados em stdout, às vezes em stderr. O formato das mensagens varia muito: às vezes um bloco inteiro é prefixado ou recuado de alguma forma, outras vezes há apenas uma string vazia com eco.

Quero saber sobre coisas que podem exigir minha intervenção em um sistema, mas não ser incomodado de outra forma. Existe alguma ferramenta que gerencie esses dados de forma inteligente e simplifique a administração do sistema? Existe alguma maneira de obter a saída gerada pelos pacotes separadamente do processo pacman de instalação deles? Ou devo escrever algum tipo de analisador que filtre coisas benignas do log de instalação?

¹ Antes de você perceber como isso é estúpido, observe que sou inteligente o suficiente para não fazer isso em servidores de produção e não sem backups completos do sistema baseados em snapshots que facilitariam a recuperação em caso de catástrofe.

Responder1

Quero ser claro para você e qualquer outra pessoa que possa encontrar esse tópico. O que você quer fazer énãopossível. Arch não esconde o fato de que esperavocêpara administrar seu sistema. Parte dessa responsabilidade está presente no ciclo de atualização.

Agora estão aípassosdo processo de atualização que você pode automatizar de forma responsável, mas nunca será um processo automatizado -Syu. Você simplesmente precisa estar presente para a atualização.

O que você pode fazer, por exemplo, é configurar um crontrabalho que baixe todos os pacotes que precisam ser instalados (mas não os instale). A seguir está um trecho da pacmandocumentação:

SYNC OPTIONS
...
-w  --downloadonly
    Retrieve all packages from the server, but do not install/upgrade anything.

Você poderia então configurar um crontrabalho para ser executado sudo pacman -Syuw. Não estou muito familiarizado com cronsuas habilidades de agendamento. No entanto, se for capaz de executar um trabalho somente após uma condição específica ter sido atendida (por exemplo, um comando retornando um valor específico), então seria bastante trivial acionar o download de novos pacotes conforme necessário.

Eu imaginaria executar uma verificação checkupdates | wc -l, por exemplo. Se retornar qualquer número acima de zero, você poderá acionar o download. Novamente, porém, isso não substituirá a execução -Syuquando você estiver presente e pronto para lidar com a atualização.

Para a parte final da sua pergunta, onde obter o resultado do que aconteceu durante uma atualização, você está procurando /var/log/pacman.log. Inclui todas as informações de erro que possam lhe interessar.


uma ferramentao objetivo é torná-lo pacmanum pouco mais amigável para usuários desconhecidos. Se não me engano, ele também fornece uma notificação sobre novidades caso haja uma atualização que exija intervenção manual.

Esta ferramenta pode tornar sua vida um pouco mais simples no curto prazo, mas nunca substituirá o seguimento sensato e diligente das Listas de Discussão.

Responder2

Existe um script antigo que faz um trabalho muito bom; é chamadoSafepac.

EDIT: Este script ainda está disponível no github aqui: https://github.com/bencahill/binfiles/blob/master/safepac

O que faz e como funciona?

A forma como costumo atualizar o Arch é ler as notícias e depois fazer pacman -Syu, ou apenas fazer pacman -Syue se algo der errado, ler as notícias. Agora este script não faz mais nada: ele obtém as últimas notícias do feed RSS, faz alguma sedmágica e compara os nomes de todos os pacotes que possuem atualizações disponíveis para as notícias. Ele corresponde a "nome-do-pacote" e "nome-do-pacote-" nas notícias, e se o nome do pacote aparecer em algum lugar nas notícias, ele irá ignorar o pacote e apenas atualizar todos os outros. Dessa forma, qualquer coisa que possa dar errado será adiada até que se tenha tempo de inspecionar o assunto manualmente, enquanto as atualizações não críticas serão feitas automaticamente!

Normalmente, depois de cuidar de uma atualização possivelmente não tranquila, você não vai querer safepacignorar um determinado pacote porque ele ainda está nas notícias. É para isso que serve a lista de ignorados. Assim, sempre que você atualizar manualmente, poderá adicionar a respectiva entrada de notícias à lista de ignorados com , ondesafepac -Ia xxxxxxé o número da entrada de notícias. Você também pode especificar o número de notícias mais recentes que deseja incluir em sua análise com a -nopção. O script também é inteligente o suficiente para ignorar entradas inexistentes. Se você encontrar problemas com pacotes que possuem nomes muito curtos que podem aparecer arbitrariamente nas notícias (como "sim") você pode adicioná-los à lista de permissões com safepac -Wapara que eles sempre sejam instalados mesmo que apareçam nas notícias.

Observe que você precisa de uma configuração de e-mail funcional, pois este script também envia um e-mail de resumo (com log completo?) E com partes importantes da atualização:

análise da pacmansaída para procurar essas palavras e adicioná-las ao resumo:
"nota" "pacnew" "erro" "importante" "aviso" "existe".

O script é antigo, mas a ideia é boa e provavelmente ainda funciona com pequenas atualizações, se houver.

Responder3

Eu uso o meuatédadepara ser executado yaourtpelo cron.

informação relacionada