Gentoo Forums
Gentoo Forums
Gentoo Forums
Quick Search: in
[Tip] dispatch-conf: etc-update on steroids
View unanswered posts
View posts from last 24 hours
View posts from last 7 days

 
Reply to topic    Gentoo Forums Forum Index Forum italiano (Italian) Risorse italiane (documentazione e tools)
View previous topic :: View next topic  
Author Message
makoomba
Moderator
Moderator


Joined: 03 Jun 2004
Posts: 1856

PostPosted: Thu Mar 23, 2006 3:32 pm    Post subject: [Tip] dispatch-conf: etc-update on steroids Reply with quote

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
View user's profile Send private message
anacleto44
n00b
n00b


Joined: 24 Aug 2005
Posts: 18

PostPosted: Thu Mar 23, 2006 3:48 pm    Post subject: Reply with quote

Grazie per l'ottimo tip! Non sapevo neanche dell'esistenza di dispatch-conf e tantomeno che fosse incluso nel portage!

Bye 8)
Back to top
View user's profile Send private message
Kernel78
Moderator
Moderator


Joined: 24 Jun 2005
Posts: 3652

PostPosted: Fri Mar 24, 2006 3:37 pm    Post subject: Reply with quote

makoomba, non cìè che dire, sei una fonte inesauriblie di materiale estremamente interessante 8)
_________________
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
View user's profile Send private message
makoomba
Moderator
Moderator


Joined: 03 Jun 2004
Posts: 1856

PostPosted: Fri Mar 24, 2006 4:14 pm    Post subject: Reply with quote

:wink:
_________________
When all else fails, read the instructions.
Back to top
View user's profile Send private message
thewally
l33t
l33t


Joined: 12 May 2005
Posts: 703
Location: Genova

PostPosted: Fri Mar 24, 2006 6:47 pm    Post subject: Reply with quote

Grande!!!
Ottimo tool :wink:
_________________
Proudly Member of GeCHI
Back to top
View user's profile Send private message
matttions
Guru
Guru


Joined: 19 Jul 2004
Posts: 338

PostPosted: Sat Apr 01, 2006 8:14 am    Post subject: Re: [Tip] dispatch-conf: etc-update on steroids Reply with quote

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
View user's profile Send private message
makoomba
Moderator
Moderator


Joined: 03 Jun 2004
Posts: 1856

PostPosted: Sat Apr 01, 2006 8:51 am    Post subject: Reply with quote

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 :wink:
_________________
When all else fails, read the instructions.
Back to top
View user's profile Send private message
skypjack
l33t
l33t


Joined: 05 Aug 2006
Posts: 884
Location: Italia - Firenze

PostPosted: Fri Apr 20, 2007 5:03 pm    Post subject: Reply with quote

L'ho letta solo ora: ottima!! :D
Back to top
View user's profile Send private message
fbcyborg
Advocate
Advocate


Joined: 16 Oct 2005
Posts: 3020
Location: ROMA

PostPosted: Sat Dec 22, 2007 10:44 am    Post subject: Reply with quote

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
View user's profile Send private message
Kernel78
Moderator
Moderator


Joined: 24 Jun 2005
Posts: 3652

PostPosted: Sat Dec 22, 2007 11:14 am    Post subject: Reply with quote

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 :wink:
_________________
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
View user's profile Send private message
fbcyborg
Advocate
Advocate


Joined: 16 Oct 2005
Posts: 3020
Location: ROMA

PostPosted: Sat Dec 22, 2007 11:19 am    Post subject: Reply with quote

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

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
View user's profile Send private message
Kernel78
Moderator
Moderator


Joined: 24 Jun 2005
Posts: 3652

PostPosted: Sat Dec 22, 2007 12:36 pm    Post subject: Reply with quote

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
View user's profile Send private message
fbcyborg
Advocate
Advocate


Joined: 16 Oct 2005
Posts: 3020
Location: ROMA

PostPosted: Sat Dec 22, 2007 1:18 pm    Post subject: Reply with quote

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
View user's profile Send private message
skypjack
l33t
l33t


Joined: 05 Aug 2006
Posts: 884
Location: Italia - Firenze

PostPosted: Sun Dec 23, 2007 11:44 am    Post subject: Reply with quote

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
View user's profile Send private message
fbcyborg
Advocate
Advocate


Joined: 16 Oct 2005
Posts: 3020
Location: ROMA

PostPosted: Sun Dec 23, 2007 11:50 am    Post subject: Reply with quote

Penso che ci vorrà un po' prima che io possa testare di nuovo la cosa.
Al prossimo emerge -uDN world ti farò sapere.

Comunque sono portato a pensare e sono quasi convinto che sia quello il problema. dispatch-conf è utile anche proprio perché non deve chiedere conferma su files che tu non hai mai modificato e che quindi può aggiornare tranquillamente, quindi...!
_________________
[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
View user's profile Send private message
Display posts from previous:   
Reply to topic    Gentoo Forums Forum Index Forum italiano (Italian) Risorse italiane (documentazione e tools) All times are GMT
Page 1 of 1

 
Jump to:  
You cannot post new topics in this forum
You cannot reply to topics in this forum
You cannot edit your posts in this forum
You cannot delete your posts in this forum
You cannot vote in polls in this forum