Como executar responsavelmente as atualizações automaticamente no Arch Linux?
Sou um pouco iniciante no Arch Linux e ainda estou me acostumando a alguns de seus paradigmas. Eu venho com muitos hábitos de outra distribuição que foi um pouco mais estruturada e, de certa forma, previsível.
Uma coisa que eu gostaria de fazer com alguns sistemas¹ é ativar um trabalho cron para fazer atualizações automáticas de todos os pacotes do sistema. Parece que seria bem fácil, exceto que eu também quero um feedback significativo do sistema, dizendo como foram as coisas que não eram tão detalhadas que acabo ignorando até descobrir que o sistema está funcionando.
A saída total de pacmané desnecessária. Não me importo quanto tempo os downloads levaram ou se estão 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 ela e todas as 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 disse:
Ou o sistema de arquivos produziu isso:
Essa última categoria é, na verdade, o que me levou a fazer essa pergunta porque parece que elas são muito inconsistentes em todo o conjunto de pacotes. Alguns destes 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 no recuo de alguma forma, outras vezes há apenas uma sequência de eco simples.
Quero saber sobre coisas que podem exigir minha intervenção em um sistema, mas que não sejam incomodadas de outra maneira. Existe uma ferramenta que gere esses dados de maneira inteligente e simplifique a administração do sistema? Existe alguma maneira de obter a saída gerada pelos pacotes separadamente do processo pacman para instalá-los? Ou estou sozinho para escrever algum tipo de analisador que filtre coisas benignas do log de instalação?
¹ Antes de pular o quão estúpido isso é, observe que sou inteligente o suficiente para não fazer isso nos servidores de produção e não sem backups completos do sistema baseados em instantâneos que facilitariam a recuperação em caso de catástrofe.
A primeira coisa que eu faria é remover a yaourttag, tanto da sua pergunta quanto do seu modelo conceitual: tentar fazer isso com os repositórios oficiais já será bastante difícil, adicionar pacotes aleatórios do AUR à mistura o tornará quixotesco ...
Ah, e isso não é uma ideia estúpida; mas isso vai muito contra a maneira como Arch trabalha. Usar checkupdatese usar -Syuuma vez por dia é uma tarefa bastante trivial; Não vejo nenhum benefício real por todo o trabalho que sua proposta implicaria.
@jasonwryan, eu pretendia expandir isso, mas na verdade tenho alguns pacotes AUR que gostaria de caber no mesmo fluxo de trabalho. Atualmente, uso extensivamente o yaourt e sinto muita falta do fato de que não há suporte a execução a seco para operações de gerenciamento de pacotes! : /
O DNA do Arch está sujando as mãos: não é assim que ele deve ser executado; você pode chegar lá, mas será uma vitória de Pirro e, se documentada aqui, levará muitos novatos à beira de um penhasco para os quais eles não estão preparados para ...
Passei um tempo tentando este ano passado e cheguei à conclusão de que a única maneira de obter atualizações sem matar sistemas regularmente era criar novas imagens (que parecem ser o ponto de teste básico e mais confiável no Arch) e depois os serviços de transplante com uma configuração ferramenta de gerenciamento. Talvez as atualizações tenham se estabilizado um pouco, mas houve 3-4 em um período de 6 meses que manejariam um sistema sem intervenção manual.
Quero deixar claro para você e qualquer outra pessoa que possa acontecer com esse tópico. O que você quer fazer não é possível. O Arch não esconde o fato de esperar que você administre seu sistema. Parte dessa responsabilidade está presente no ciclo de atualização.
Agora, existem etapas do processo de atualização que você pode automatizar de maneira responsável, mas isso nunca será automatizado -Syu. Você simplesmente precisa estar lá para a atualização.
O que você pode fazer, por exemplo, é configurar um crontrabalho que baixa todos os pacotes que precisam ser instalados (mas não os instala). A seguir, um trecho da pacmandocumentação:
Você poderia então configurar um crontrabalho para executar sudo pacman -Syuw. Não estou muito familiarizado com cronas habilidades de programação. No entanto, se for capaz de executar um trabalho apenas após uma condição específica ter sido atendida (por exemplo, um comando retornando um valor específico), seria bastante trivial acionar o download de novos pacotes, conforme necessário.
Eu imaginaria executar um cheque contra checkupdates | wc -l, por exemplo. Se retornar qualquer número acima de zero, você poderá acionar o download. Novamente, no entanto, isso não substituirá a execução de um -Syuquando você estiver presente e pronto para lidar com a atualização.
Na parte final da sua pergunta, onde obter a saída do que aconteceu durante uma atualização, você está procurando /var/log/pacman.log. Inclui todas as informações de erro que podem lhe interessar.
Existe uma ferramenta destinada a tornar pacmanum pouco mais amigável para usuários desconhecidos. Se não me engano, ele também fornece uma notificação sobre novos itens, se houver uma atualização que requeira intervenção manual.
Essa ferramenta pode tornar sua vida um pouco mais simples no curto prazo, mas nunca será um substituto para seguir de forma sensata e diligente as Listas de Discussão.
Na verdade, para avisos sobre pacotes oficiais que exigirão intervenções manuais, eu recomendaria que você seguisse arch-dev-public e arch-general .
Além disso, @jasonwryan está totalmente correto. Isso pacmanpode ser possível. Fazer isso yaourtnão é viável.
yaourtna verdade, faz um trabalho um pouco melhor do que pacman, no entanto, como eu acho que você quer dizer, sua configuração padrão como pouco mais do que um aur aur quase certamente destruiria as coisas a longo prazo. No entanto, é extremamente configurável e pode ser feito para manter as árvores de origem com muita eficiência. Ambos yaourte pacmanapenas envolvem de alpmqualquer maneira.
Ou, eu acho que é mais verdadeiro dizer, yaourtenvoltórios pacmane algumas alpmfuncionalidades e pacmanenvoltórios adicionais alpm. Em qualquer caso, porém, yaourtse estende pacman.
Como observado aqui , -Syuwé potencialmente bastante perigoso. Ele tem a capacidade de produzir atualizações parciais se as atualizações não forem aplicadas e o software for instalado posteriormente -S.
Existe um script antigo que faz um bom trabalho; é chamado safepac .
EDIT: Este script ainda está disponível no github aqui: https://github.com/bencahill/binfiles/blob/master/safepac
O modo como costumo atualizar o Arch é ler as notícias e depois ler pacman -Syu, ou apenas pacman -Syuler e, se algo der errado, ler as notícias. Agora, esse script não faz mais nada: ele obtém as últimas entradas de notícias do feed RSS, faz alguma sedmágica e compara os nomes de todos os pacotes que têm 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 ignorará o pacote e atualizará apenas 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 suave, você não vai querer safepacainda ignorar um determinado pacote, porque ele ainda está nas notícias. É para isso que serve o ignorante. Assim, toda vez que você atualiza manualmente, você pode adicionar a respectiva entrada de notícias à lista de ignorados com , onde é o número da entrada de notícias. Você também pode especificar o número de notícias mais recentes que deseja incluir na análise com a opção. O script também é inteligente o suficiente para ignorar entradas não existentes. Se você encontrar problemas com pacotes com nomes muito curtos que possam aparecer arbitrariamente nas notícias (como "sim"), adicione-os à lista de permissões com, para que eles sempre sejam instalados, mesmo que apareçam nas notícias.safepac -Ia xxxxxx-nsafepac -Wa
Observe que você precisa de uma configuração de correio em funcionamento, pois esse script também envia um e-mail de resumo (com log completo?) E partes importantes da atualização:
análise de pacmansaída para procurar essas palavras e adicioná-lo ao resumo:
"note" "pacnew" "error" "important" "warning" "Existe".
O script é antigo, mas a ideia é boa e provavelmente ainda funciona com pequenas atualizações, se houver.
um possível problema é que a atualização principal (ou final) não é informada nas notícias, mas você deve acompanhar por si mesmo. Caso em questão, atualização de python2 para python3
Ainda assim, você pode usar checkupdates (pacman-utils) e obter a lista de pacotes e, em seguida, incluí-los na lista de permissões remotamente, bom se você tiver um pool, mas talvez seja melhor configurar algo como um
Eu uso minha própria utilidade para executar yaourtpelo cron.
Yaourt está efetivamente morto : essa é uma idéia espetacularmente ruim.
Eu usei yaourtpor muitos anos eu mesmo. Era uma boa ferramenta, mas as coisas que foram criadas para "embrulhar" mudaram de forma e fazem várias coisas completamente erradas agora. Nesse ponto, é tão problemático que os autores da ferramenta disseram que nem a usam mais. Se você quer um ajudante do AUR, sugiro que tente um dos que são mantidos ativamente. Eu mudei para yaymim mesmo e estou muito feliz.