Como posso executar atualizações automaticamente no Arch Linux?

14

Sou um pouco novato no Arch Linux e ainda me acostumei com alguns de seus paradigmas. Eu 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¹ é permitir que uma tarefa do cron faça atualizações automáticas de todos os pacotes do sistema. Isso parece ser bem fácil, exceto que eu também quero algum feedback significativo do sistema me dizendo como as coisas foram que não foram tão verbosas que eu acabei ignorando-o até descobrir que o sistema está agindo.

  • A saída total de pacman é desnecessária. Eu não me importo quanto tempo os downloads levaram ou que 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, eu quero saber sobre ela e quaisquer mensagens de erro específicas devem ser corrigidas.
  • Eu me preocupo com os "avisos" emitidos durante a instalação. Por exemplo, a atualização do systemd de hoje disse:

    :: 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 isso:

    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 é, na verdade, o que me levou a fazer essa pergunta porque parece que eles 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 escritos para stdout, às vezes para stderr. O formato das mensagens varia muito: às vezes, um bloco inteiro é prefixado em recuado de alguma forma, outras vezes há apenas uma string nua e ecoada.

Eu quero saber sobre coisas que podem exigir minha intervenção em um sistema, mas não serei incomodado de outra forma. Existe uma ferramenta lá fora que inteligentemente gerencia esses dados e simplifica a administração do sistema? Existe alguma maneira de obter a saída gerada pelos pacotes separadamente do processo do pacman instalando-os? Ou eu estou sozinho para escrever algum tipo de analisador que filtra coisas benignas do registro de instalação?

¹ Antes de você pular o quanto isso é estúpido, por favor note que eu sou inteligente o suficiente para não fazer isso em servidores de produção e não sem backups de sistema completos baseados em snapshots que tornariam a recuperação fácil no caso de uma catástrofe .

    
por Caleb 25.06.2014 / 09:39

2 respostas

8

Eu quero ser claro para você e qualquer outra pessoa que possa acontecer neste tópico. O que você quer fazer é não possível. Arch não faz segredo do fato de que espera que você administre seu sistema. Parte dessa responsabilidade está presente no ciclo de atualização.

Agora, há etapas do processo de atualização que você pode automatizar com responsabilidade, mas nunca será um -Syu automatizado. Você simplesmente precisa estar lá para a atualização.

O que você pode fazer, por exemplo, é configurar um trabalho cron que faz o download de todos os pacotes que precisam ser instalados (mas não de instalá-los). A seguir, um trecho da documentação pacman :

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

Você poderia, então, configurar um trabalho cron para executar sudo pacman -Syuw . Eu não estou muito familiarizado com cron ou suas habilidades de agendamento. No entanto, se ele for capaz de executar apenas um trabalho depois que uma determinada condição for atendida (por exemplo, um comando retornando um valor específico), seria bastante trivial acionar o download de novos pacotes conforme necessário.

Eu imagino executar uma verificação em relação a checkupdates | wc -l , por exemplo. Se ele retornar qualquer número acima de zero, você poderá acionar o download. Novamente, no entanto, isso não substituirá a execução de um -Syu quando você estiver presente e pronto para lidar com a atualização.

Para a parte final de sua pergunta, onde obter resultados 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.

Existe uma ferramenta destinada a tornar pacman um pouco mais amigável para usuários desconhecidos. Se não me engano, também fornece uma notificação sobre itens de notícias, se houver uma atualização que requeira intervenção manual.

Esta ferramenta pode tornar a sua vida um pouco mais simples a curto prazo, mas nunca substituirá as Listas de Discussão de forma sensata e diligente.

    
por 27.06.2014 / 03:59
1

Existe um script antigo que faz um bom trabalho; ele é chamado de safepac .

EDIT: Este script ainda está disponível no github aqui: link

What does it do and how does it work?

The way I usually update Arch is to read the news and then do pacman -Syu, or to just do pacman -Syu and if anything goes wrong, read the news. Now this script does nothing else: It gets the latest news entries from the RSS feed, does some sed magic, and compares the names of all packages that have updates available to the news. It matches " package-name " and "package-name-" in the news, and if the package name appears somewhere in the news, it will ignore the package and only update all the others. This way, anything that might go wrong will be postponed until one has the time to inspect the matter by hand, while non-critical updates will just be done automatically!

Usually, once you have taken care of a possibly non-smooth update, you will not want to have safepac still ignore a certain package because it's still in the news. That's what the ignorelist is for. So every time you've updated manually, you can add the respective news entry to the ignore list with safepac -Ia xxx, where xxx is the number of the news entry. You can also specify the number of latest news you want to include in its parsing with the -n switch. The script is also smart enough to skip non-existing entries. If you encounter problems with packages that have very short names that might arbitrarily appear in the news (like "yes") you can add them to the whitelist with safepac -Wa so that they will always be installed even if they appear in the news.

Por favor, note que você precisa de uma configuração de e-mail funcional, pois esse script também envia um e-mail de resumo (com log completo?) e com partes salientes da atualização:

parsing of pacman output to look for these words and add it to the digest:
"note" "pacnew" "error" "important" "warning" "exists".

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

    
por 25.03.2015 / 00:21