View previous topic :: View next topic |
Author |
Message |
makoomba Bodhisattva
Joined: 03 Jun 2004 Posts: 1856
|
Posted: Thu Mar 23, 2006 3:32 pm Post subject: [Tip] dispatch-conf: etc-update on steroids |
|
|
tutti conoscono etc-update, ma molti ignorano che portage include un tool molto più comodo per gestire i files di configurazione:
man dispatch-conf wrote: | dispatch-conf is designed to be run after merging new packages in order to see if there are updates to the configuration files.
If a new configuration file will overwrite an old one, dispatch-conf will prompt the user for a decision about how to resolve the discrepancy.
Advantages of dispatch-conf include easy rollback (changes to config files are stored either using patches or rcs) and the ability to automatically
update config files that the user has never modified or that differ from the current version only in CVS cruft or white space. |
in parole povere, il pupo è in grado di velocizzare notevolmente l'update dei nuovi files perchè:
- può aggiornare automaticamente i files che l'utente non ha modificato
- ignora le differenze che riguardano solo spazi/commenti/numeri di versione riportati nel file.
come già detto, è incluso in portage quindi basta configurarlo:
Code: | mail ~ # cat /etc/dispatch-conf.conf
#
# dispatch-conf.conf
#
# Directory to archive replaced configs
archive-dir=/etc/config-archive
# Use rcs for storing files in the archive directory?
# (yes or no)
use-rcs=yes
# Diff for display
# %s old file
# %s new file
diff="colordiff -Nu %s %s | less --no-init --QUIT-AT-EOF"
# per utilizzare il diff di vim (matttions)
#diff="gvim -d %s %s | less --no-init --QUIT-AT-EOF"
# Diff for interactive merges.
# %s output file
# %s old file
# %s new file
merge="sdiff --suppress-common-lines --output=%s %s %s"
# Automerge files comprising only CVS interpolations (e.g. Header or Id)
# (yes or no)
replace-cvs=yes
# Automerge files comprising only whitespace and/or comments
# (yes or no)
replace-wscomments=no
# Automerge files that the user hasn't modified
# (yes or no)
replace-unmodified=yes
# Per-session log file of changes made to configuration files
#log-file=/var/log/dispatch-conf.log
|
colordiff va emerso e, come s'intuisce, colora l'output di diff, semplificando il merge.
la feature più interessante di dspatch-conf, è però racchiusa nelle opzioni
Code: | # Directory to archive replaced configs
archive-dir=/etc/config-archive
# Use rcs for storing files in the archive directory?
use-rcs=yes |
creando la dir /etc/config-archive, emergendo rcs e abilitandone l'uso in dispatch-conf, si ottiene un sistema di revisione automatico.
ogni volta che, tramite dispatch-conf, aggiorneremo un file, le vecchie configurazioni saranno archiviate in /etc/config-archive.
sarà quindi sempre possibile ritornare agli stati precedenti l'aggiornamento, senza la scomodità di dover backuppare manualmente i files.
supponiamo di aver aggiornato apache e di conseguenza il file /etc/conf.d/apache.
il comando
Code: | mail ~ # rlog /etc/config-archive/etc/conf.d/apache,v
....
total revisions: 3; selected revisions: 3
----------------------------
revision 1.2
date: 2005/09/22 14:22:56; author: root; state: Exp; lines: +28 -6
dispatch-conf update.
----------------------------
revision 1.1
date: 2005/09/13 15:45:30; author: root; state: Exp;
branches: 1.1.1;
dispatch-conf update.
----------------------------
revision 1.1.1.1
date: 2005/09/13 15:45:37; author: root; state: Exp; lines: +28 -6
dispatch-conf update.
|
mostra che, nell'archivio, sono presenti 3 versioni salvate da dspatch-conf durante i vari update.
possiamo visualizzare una versione qualsiasi con
Code: | mail ~ # co -p -r1.1 /etc/config-archive/etc/conf.d/apache,v
/etc/config-archive/etc/conf.d/apache,v --> standard output
revision 1.1
# Copyright 1999-2004 Gentoo Foundation
.....
#APACHE_OPTS="-D PHP4"
APACHE_OPTS="-D PHP4 -D SECURITY" |
per ripristinare una vecchia versione, basta redirigere l'output del comando precedente
si può salvare "esplicitamente" la versione attuale del file, magari per fare delle modifiche in tutta sicurezza.
Code: | ## otteniamo il lock sul file ##
mail ~ # co -l /etc/config-archive/etc/conf.d/apache,v
/etc/config-archive/etc/conf.d/apache,v --> apache
revision 1.2 (locked)
done
## salviamo la versione corrente con numero di revisione 1.3 ##
mail ~ # ci -r1.3 /etc/conf.d/apache /etc/config-archive/etc/conf.d/apache,v
/etc/config-archive/etc/conf.d/apache,v <-- /etc/conf.d/apache
new revision: 1.3; previous revision: 1.2
enter log message, terminated with single '.' or end of file:
>> salvataggio di sicurezza
>> .
done |
ora possiamo modificare a piacimento il file, recuperando la copia di sicurezza appena fatta qualora ce ne fosse bisogno.
happy configuring! _________________ When all else fails, read the instructions.
Last edited by makoomba on Sat Apr 01, 2006 8:53 am; edited 1 time in total |
|
Back to top |
|
|
anacleto44 n00b
Joined: 24 Aug 2005 Posts: 18
|
Posted: Thu Mar 23, 2006 3:48 pm Post subject: |
|
|
Grazie per l'ottimo tip! Non sapevo neanche dell'esistenza di dispatch-conf e tantomeno che fosse incluso nel portage!
Bye |
|
Back to top |
|
|
Kernel78 Moderator
Joined: 24 Jun 2005 Posts: 3654
|
Posted: Fri Mar 24, 2006 3:37 pm Post subject: |
|
|
makoomba, non cìè che dire, sei una fonte inesauriblie di materiale estremamente interessante _________________ Le tre grandi virtù di un programmatore: pigrizia, impazienza e arroganza. (Larry Wall).
Prima di postare un file togli i commenti con Code: | grep -vE '(^[[:space:]]*($|(#|!|;|//)))' |
|
|
Back to top |
|
|
makoomba Bodhisattva
Joined: 03 Jun 2004 Posts: 1856
|
Posted: Fri Mar 24, 2006 4:14 pm Post subject: |
|
|
_________________ When all else fails, read the instructions. |
|
Back to top |
|
|
thewally l33t
Joined: 12 May 2005 Posts: 703 Location: Genova
|
Posted: Fri Mar 24, 2006 6:47 pm Post subject: |
|
|
Grande!!!
Ottimo tool _________________ Proudly Member of GeCHI |
|
Back to top |
|
|
matttions Guru
Joined: 19 Jul 2004 Posts: 338
|
Posted: Sat Apr 01, 2006 8:14 am Post subject: Re: [Tip] dispatch-conf: etc-update on steroids |
|
|
E' possibile cambiare la funzione di diff da
makoomba wrote: |
-CUT-
Code: |
# Diff for display
# %s old file
# %s new file
diff="colordiff -Nu %s %s | less --no-init --QUIT-AT-EOF"
|
CUT
|
a
Code: |
# Diff for display
# %s old file
# %s new file
diff="gvim -d %s %s | less --no-init --QUIT-AT-EOF"
|
in modo da utilizzare il diff di vim ...
Io la trovo molto comoda.
C'è in dispatch-conf la possibilità di prendere tutti i nuovi file di configurazione come in etc-update con un unico comando ? [-5 in etc-update][/code] _________________ gentoo ... l'unico pinguino da corsa |
|
Back to top |
|
|
makoomba Bodhisattva
Joined: 03 Jun 2004 Posts: 1856
|
Posted: Sat Apr 01, 2006 8:51 am Post subject: |
|
|
non c'è e credo sia un bene.
tieni conto che il numero di files da aggiornare manualmente è nettamente inferiore rispetto all'uso di etc-update
aggiungo gvim al tip _________________ When all else fails, read the instructions. |
|
Back to top |
|
|
skypjack l33t
Joined: 05 Aug 2006 Posts: 884 Location: Italia - Firenze
|
Posted: Fri Apr 20, 2007 5:03 pm Post subject: |
|
|
L'ho letta solo ora: ottima!! |
|
Back to top |
|
|
fbcyborg Advocate
Joined: 16 Oct 2005 Posts: 3056 Location: ROMA
|
Posted: Sat Dec 22, 2007 10:44 am Post subject: |
|
|
Più di una volta mi è successa una cosa molto curiosa, che forse dipende dalla configurazione di dispatch-conf ma non sono sicuro.
Dopo un emerge -uDN world mi succede quanto sto per descrivervi:
dopo l'autoclean dei pacchetti mi comunica che ci sono (ad esempio) 48 files da aggiornare in /etc/.
Fin quì tutto ok.
Lancio il dispatch-conf e vedo un sacco di scritte che passano davanti velocemente (suppongo siano gli update dei files di configurazione che avvengono in automatico).
Dopo di che, quando ha finito, comincia a chiedermi se deve aggiornare i files che necessitano di una conferma se essere aggiornati o no.
La cosa curiosa è che ora mi vuole chiedere di aggiornare, non più un numero di files <= 48, bensì 138 files!!!!!
Ma porca miseria!
Ad esempio mi chiede di aggiornare molti files in /etc/init.d/ ... quelli al 99,9% dirò sempre sì... perché non li fa in automatico?
Inoltre non capisco perché mi chiede sempre di aggiornare files che io non ho MAI toccato (nel senso.. files che io non ho mai modificato, può aggiornarli tranquillamente, perché non lo fa?) per esempioun sacco di files in /usr/share/X11/.
Devo dire si o no, 138 volte? Non va bene questa cosa.
Qualche idea? _________________ [HOWTO] Come criptare la /home usando cryptsetup e luks
[HOWTO] Abilitare il supporto al dom0 XEN su kernel 3.X
Help answer the unanswered |
|
Back to top |
|
|
Kernel78 Moderator
Joined: 24 Jun 2005 Posts: 3654
|
Posted: Sat Dec 22, 2007 11:14 am Post subject: |
|
|
Due domande:
- usi la configurazione proposta dal mitico makoomba (sempre sia lodato) ? o hai impostato almeno replace-unmodified=yes ?
- non è che in uno dei vari aggiornamenti hai aggiornato anche la configurazione di dispatch-conf e ti sei fumato quella modifica ?
In ogni caso posta la tua configurazione _________________ Le tre grandi virtù di un programmatore: pigrizia, impazienza e arroganza. (Larry Wall).
Prima di postare un file togli i commenti con Code: | grep -vE '(^[[:space:]]*($|(#|!|;|//)))' |
|
|
Back to top |
|
|
fbcyborg Advocate
Joined: 16 Oct 2005 Posts: 3056 Location: ROMA
|
Posted: Sat Dec 22, 2007 11:19 am Post subject: |
|
|
Kernel78 wrote: | Due domande:
- usi la configurazione proposta dal mitico makoomba (sempre sia lodato) ? o hai impostato almeno replace-unmodified=yes ?
- non è che in uno dei vari aggiornamenti hai aggiornato anche la configurazione di dispatch-conf e ti sei fumato quella modifica ?
In ogni caso posta la tua configurazione |
Ciao,
-Io ho utilizzato la configurazione che è appunto postata nel primo messaggio. A meno che non si sia modificata da sola.. dovrebbe essere simile.
-Mi è successa una cosa del genere una volta, ma non sul pc in questione. Ho prontamente ripristinato la situazione e non mi sembra di aver avuto lo stesso problema.
Comunque ecco il mio file di configurazione:
Code: | archive-dir=/etc/config-archive
use-rcs=yes
diff="colordiff -Nu %s %s | less --no-init --QUIT-AT-EOF"
merge="sdiff --suppress-common-lines --output=%s %s %s"
replace-cvs=yes
replace-wscomments=no
replace-unmodified=yes
|
forse manca un Code: | ignore-previously-merged=yes |
Grazie _________________ [HOWTO] Come criptare la /home usando cryptsetup e luks
[HOWTO] Abilitare il supporto al dom0 XEN su kernel 3.X
Help answer the unanswered |
|
Back to top |
|
|
Kernel78 Moderator
Joined: 24 Jun 2005 Posts: 3654
|
Posted: Sat Dec 22, 2007 12:36 pm Post subject: |
|
|
fbcyborg wrote: |
forse manca un Code: | ignore-previously-merged=yes |
|
si, l'unica differenza con la mia configurazione è proprio la mancanza di quella riga nella tua.
Visto che il commento relativo è Quote: | # Ignore a version that is identical to the previously merged version,
# even though it is different from the current user modified version
# (yes or no)
| direi che potrebbe fare al caso tuo.
Mi rimane il dubbio di come mai dispatch-conf ti faccia sistemare più file di quanti segnalati da emerge ... _________________ Le tre grandi virtù di un programmatore: pigrizia, impazienza e arroganza. (Larry Wall).
Prima di postare un file togli i commenti con Code: | grep -vE '(^[[:space:]]*($|(#|!|;|//)))' |
|
|
Back to top |
|
|
fbcyborg Advocate
Joined: 16 Oct 2005 Posts: 3056 Location: ROMA
|
Posted: Sat Dec 22, 2007 1:18 pm Post subject: |
|
|
Kernel78 wrote: | fbcyborg wrote: |
forse manca un Code: | ignore-previously-merged=yes |
|
si, l'unica differenza con la mia configurazione è proprio la mancanza di quella riga nella tua.
Visto che il commento relativo è Quote: | # Ignore a version that is identical to the previously merged version,
# even though it is different from the current user modified version
# (yes or no)
| direi che potrebbe fare al caso tuo.
Mi rimane il dubbio di come mai dispatch-conf ti faccia sistemare più file di quanti segnalati da emerge ... |
Intanto apporto la modifica.. staremo a vedere... _________________ [HOWTO] Come criptare la /home usando cryptsetup e luks
[HOWTO] Abilitare il supporto al dom0 XEN su kernel 3.X
Help answer the unanswered |
|
Back to top |
|
|
skypjack l33t
Joined: 05 Aug 2006 Posts: 884 Location: Italia - Firenze
|
Posted: Sun Dec 23, 2007 11:44 am Post subject: |
|
|
fbcyborg, ho un problema simile. Non ottengo più file in fasi diverse, ma mi viene chiesta conferma anche per file che non dovrebbero motivare la richiesta in quanto mai toccati o avvicinati da alcuna modifica!!
Fammi sapere se risolvi con la riga sopra, sono curioso e interessato ... |
|
Back to top |
|
|
fbcyborg Advocate
Joined: 16 Oct 2005 Posts: 3056 Location: ROMA
|
|
Back to top |
|
|
|