Come posso eseguire automaticamente gli aggiornamenti in modo responsabile su Arch Linux?


15

Sono un po 'nuovo di Arch Linux e mi sto ancora abituando ad alcuni dei suoi paradigmi. Vengo con molte abitudini da un'altra distro che era un po 'più strutturato e in qualche modo prevedibile.

Una cosa che vorrei fare con alcuni sistemi¹ è abilitare un lavoro cron per fare aggiornamenti automatici di tutti i pacchetti di sistema. Sembra che sarebbe abbastanza facile, tranne che voglio anche un feedback significativo dal sistema che mi dica come sono andate le cose che non erano così dettagliate che finisco per ignorarle fino a quando non scopro che il sistema funziona.

  • L'output completo di pacmannon è necessario. Non mi importa quanto tempo hanno impiegato i download o che è sull'aggiornamento 46 di 53.
  • Per la maggior parte non mi importa dei successi.
  • Mi preoccupo degli errori. Se l'esecuzione di un aggiornamento fallisce, voglio conoscerlo e qualsiasi messaggio di errore specifico dovrebbe essere corretto.
  • Mi preoccupo degli "avvisi" emessi durante l'installazione. Ad esempio l'aggiornamento di Systemd di oggi ha detto:

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

    O il filesystem ha prodotto questo:

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

    Quest'ultima categoria è in realtà ciò che mi ha spinto a porre questa domanda perché sembra che siano molto incoerenti nel set di pacchetti. Alcuni di questi sembrano essere generati da post_upgrade(), altri da install(), ecc. A volte sono scritti su stdout, a volte su stderr. Il formato dei messaggi varia ampiamente: a volte un intero blocco ha il prefisso in modo rientrato in qualche modo, altre volte c'è solo una stringa con eco nudo.

Voglio sapere cose che potrebbero richiedere il mio intervento su un sistema ma non essere disturbati altrimenti. Esiste uno strumento che gestisce in modo intelligente questi dati e semplifica l'amministrazione del sistema? Esiste un modo per ottenere l'output generato dai pacchetti separatamente dal processo pacman che li installa? O sono io da solo a scrivere una sorta di parser che filtra le cose benigne dal registro di installazione?

¹ Prima di saltare su quanto sia stupido, tieni presente che sono abbastanza intelligente da non farlo sui server di produzione e non senza backup di sistema completi basati su snapshot che faciliterebbero il recupero in caso di catastrofe.


La prima cosa che vorrei fare è rimuovere il yaourttag, sia dalla tua domanda che dal tuo modello concettuale: provare a farlo con i repository ufficiali sarà abbastanza difficile, aggiungere pacchetti casuali dall'AUR al mix lo renderà chiassoso ...
jasonwryan il

Oh, e questa non è un'idea stupida; ma si spinge molto contro il modo in cui funziona Arch. Usare checkupdatese usare -Syuuna volta al giorno è un compito piuttosto banale; Non vedo alcun vantaggio reale per tutto il lavoro che la tua proposta comporterebbe.
Jasonwryan,

@jasonwryan Volevo ampliarlo, ma in realtà ho alcuni pacchetti AUR che vorrei inserire nello stesso flusso di lavoro. Attualmente utilizzo ampiamente lo yaourt e mi manca molto il fatto che non ci sia supporto a secco per le operazioni di gestione dei pacchetti! : /
Caleb,

2
Il DNA di Arch si sta sporcando le mani: non è così che deve essere gestito; potresti arrivarci, ma sarà una vittoria di Pirro e, se documentato qui, condurrà un sacco di principianti sul bordo di una scogliera per cui sono completamente impreparati per ...
Jasonwryan,

2
Ho passato un po 'di tempo a provare questo anno scorso e sono giunto alla conclusione che l'unico modo per ottenere aggiornamenti senza uccidere regolarmente i sistemi era quello di creare nuove immagini (che sembra essere il punto di test di base e più affidabile in Arch), quindi trapiantare i servizi con una configurazione strumento di gestione. Forse gli aggiornamenti si sono stabilizzati un po ', ma ci sono stati 3-4 in un periodo di 6 mesi che avrebbe condotto un sistema senza intervento manuale.
Matt,

Risposte:


11

Voglio essere chiaro sia per te che per qualsiasi altra persona che potrebbe capitare su questa discussione. Quello che vuoi fare non è possibile. Arch non fa mistero del fatto che si aspetta che tu gestisca il tuo sistema. Parte di tale responsabilità è presente per il ciclo di aggiornamento.

Ora, ci sono passaggi del processo di aggiornamento che è possibile automatizzare in modo responsabile, ma non equivarrà mai a un sistema automatizzato -Syu. Devi semplicemente essere lì per l'aggiornamento.

Quello che puoi fare, ad esempio, è impostare un cronlavoro che scarica tutti i pacchetti che devono essere installati (ma non installarli). Quello che segue è un estratto della pacmandocumentazione:

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

È quindi possibile impostare un cronlavoro da eseguire sudo pacman -Syuw. Non ho molta familiarità con cronle sue abilità di pianificazione. Tuttavia, se è in grado di eseguire un lavoro solo dopo che è stata soddisfatta una determinata condizione (ad esempio un comando che restituisce un determinato valore), sarebbe abbastanza banale innescare il download di nuovi pacchetti in base alle esigenze.

Immagino checkupdates | wc -l, ad esempio, di eseguire un assegno . Se restituisce un numero superiore a zero, è possibile attivare il download. Ancora una volta, tuttavia, questo non sostituirà l'esecuzione di un -Syuquando sei presente e pronto a gestire l'aggiornamento.

Per la parte finale della tua domanda, dove ottenere l'output di ciò che è accaduto durante un aggiornamento, stai cercando /var/log/pacman.log. Include tutte le informazioni di errore che potrebbero interessarti.


C'è uno strumento che ha lo scopo di rendere pacmanun po 'più amichevole per gli utenti sconosciuti. Se non sbaglio, fornisce anche una notifica sulle notizie se ci dovrebbe essere un aggiornamento che richiede l'intervento manuale.

Questo strumento potrebbe rendere la tua vita un po 'più semplice a breve termine, ma non sarà mai un rimpiazzo per seguire in modo ragionevole e diligente le mailing list.


2
In realtà, per gli avvisi sui pacchetti ufficiali che richiederanno interventi manuali, ti consiglio di seguire arch-dev-public e arch-general .
HalosGhost il

Inoltre, @jasonwryan è del tutto corretto. Farlo con pacmanpotrebbe essere possibile. Farlo con yaourtnon è fattibile.
HalosGhost il

yaourtin realtà fa un lavoro leggermente migliore di questo che pacman, sebbene, come penso tu intenda, la sua configurazione di default come poco più di un aur helper quasi sicuramente rovinerebbe le cose a lungo termine. È, tuttavia, estremamente configurabile e può essere realizzato per mantenere gli alberi di origine in modo molto efficace. Avvolgere entrambi yaourte pacmansolo alpmcomunque.
Mikeserv,

Oppure, suppongo sia più vero dire, yaourtimpacchi pacmane alcune alpmfunzionalità aggiuntive e pacmanimpacchi alpm. In ogni caso, tuttavia, si yaourtestende pacman.
Mikeserv,

Come notato qui , -Syuwè potenzialmente abbastanza pericoloso. Ha la capacità di produrre aggiornamenti parziali se gli aggiornamenti non vengono applicati e il software viene successivamente installato con -S.
Sparhawk,

1

C'è una vecchia sceneggiatura che fa davvero un buon lavoro; si chiama safepac .

EDIT: questo script è ancora disponibile su github qui: https://github.com/bencahill/binfiles/blob/master/safepac

Cosa fa e come funziona?

Il modo in cui aggiorno di solito Arch è leggere le notizie e poi fare pacman -Syu, o semplicemente fare pacman -Syue se qualcosa va storto, leggi le notizie. Ora questo script non fa nient'altro: ottiene le ultime notizie dal feed RSS, fa un po 'di sedmagia e confronta i nomi di tutti i pacchetti che hanno aggiornamenti disponibili per le notizie. Corrisponde a "nome-pacchetto" e "nome-pacchetto-" nelle notizie e se il nome del pacchetto appare da qualche parte nelle notizie, ignorerà il pacchetto e aggiornerà solo tutti gli altri. In questo modo, tutto ciò che potrebbe andare storto verrà rinviato fino a quando non si avrà il tempo di ispezionare la questione a mano, mentre gli aggiornamenti non critici verranno eseguiti automaticamente!

Di solito, una volta che ti sei preso cura di un aggiornamento forse non regolare, non vorrai safepacancora ignorare un certo pacchetto perché è ancora nelle notizie. Ecco a cosa serve l'ignorista. Quindi, ogni volta che si aggiorna manualmente, è possibile aggiungere la rispettiva voce di notizie all'elenco di ignorare con , dove si trova il numero della notizia. Puoi anche specificare il numero delle ultime notizie che vuoi includere nella sua analisi con lo switch. Lo script è anche abbastanza intelligente da saltare voci inesistenti. Se riscontri problemi con i pacchetti che hanno nomi molto brevi che potrebbero apparire arbitrariamente nelle notizie (come "sì") puoi aggiungerli alla whitelist in modo che vengano sempre installati anche se compaiono nelle notizie.safepac -Ia xxxxxx-nsafepac -Wa

Si noti che è necessaria un'impostazione della posta funzionante poiché questo script invia anche una posta digest (con il registro completo?) E con parti salienti dell'aggiornamento:

analisi pacmandell'output per cercare queste parole e aggiungerlo al digest:
"note" "pacnew" "errore" "importante" "avviso" "esiste".

Lo script è vecchio, ma l'idea è buona e probabilmente funziona ancora con un aggiornamento minore, se presente.


un possibile problema è che gli aggiornamenti importanti (o non funzionanti) non sono riportati nelle notizie, ma è necessario monitorare da soli. Caso in questione, aggiornamento da python2 a python3
Lesto,

Tuttavia, potresti usare checkupdates (pacman-utils) e ottenere l'elenco dei pacchetti, quindi autorizzarli in remoto, bene se hai un pool, ma forse è meglio impostare qualcosa come un repository locale
Lesto,

-2

Uso la mia untility per eseguire yaourtcron.


1
Yaourt è effettivamente morto : questa è una pessima idea.
Jasonwryan,

Ho usato yaourtper molti anni me stesso. Era un buon strumento, ma le cose che è stato costruito per "avvolgere" hanno cambiato forma e ora fanno parecchie cose sbagliate. A questo punto è così problematico che gli autori dello strumento hanno detto che non lo usano più da soli. Se vuoi un aiutante AUR ti suggerisco di provare uno di quelli mantenuti attivamente. Sono passato a yayme stesso e sono abbastanza felice.
Caleb,

Questa utilità funziona anche con yayme.
Vadzim,
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.