# [TIP] etc-update

## Trevoke

La question revient regulierement, donc autant l'addresser une fois pour toute.

Apres avoir utilise la commande emerge, parfois un message similare a celui-ci apparait:

 *Quote:*   

>  * Regenerating GNU info directory index...
> 
>  * Processed 225 info files.
> 
>  * IMPORTANT: 1 config files in /etc need updating.
> ...

 

Il est *necessaire* a cet instant d'utiliser etc-update. Je ne vais pas expliquer pourquoi, allez lire la doc.

Mais comment on s'en sert alors?

Quand vous utilisez etc-update, il se peut qu'une tres longue liste apparaisse. Tous ces fichiers sont des fichiers de configuration et donc a modifier avec precaution (si, si).

Je me sers de ma memoire surhumaine, mais vous pouvez vous servir d'un bout de papier ou d'un fichier texte (qui risque de devenir un classeur plein de pages ou un document OOo). Le but du jeu est de se rappeler de quels fichiers NOUS avons modifie, car ces modifications sont importantes -- donc, il faut choisir le nombre de ce fichier de configuration (qui apparait et que nous avons modifie) pour verifier quels changements sont faits dedans et s'assurer que les notres ne disparaissent pas.

Une fois que c'est fini, il faut verifier la liste une fois de plus pour s'assurer qu'il n'y a pas un nouveau fichier que nous voulons modifier.. Et ensuite, on peut faire la commande maudite, -5.

La commande maudite.. Celle qui a ete la fin de tant d'aventuriers malheureux.. La mort de tant de distributions qui auraient pu avoir des vies longues et prosperes.. Je me reveille des fois, la nuit, couvert de sueur, en hurlant...

Bon je me tais maintenant.

----------

## Pixys

 *Quote:*   

> La commande maudite.. Celle qui a ete la fin de tant d'aventuriers malheureux.. La mort de tant de distributions qui auraient pu avoir des vies longues et prosperes.. 

  ouai   :Evil or Very Mad:  juste un question en passant: un disque dur, ça supporte combien de formatage/réinstallation parce que.......

C'est bien joli tout ça , c'est facile pour vous grand gourou de la Gentoo mais pour moi pauvre petite crotte comment est ce que je sais que je peux remplacer ces maudits fichiers?? je jure qu'avant d'utiliser -3 ou -5 je lis le texte (si si promis) mais bon voilà, c'est cool chui v'nu, j'ai lu et puis chui foutu car j'ai dit: "booa!! pt'être qui va redémarrer quand même..... aaah youpi il redemarre ben qu'est qu'il a mon gdm ?? il est pas bô... ah! ben oui c'est normal: il a muté: c'est devenu un xdm... bon allé hop un petit formatage et un réinstallation s'impose allez zouuu fait chauffer le cpu!!!

@+

----------

## boozo

tiens celui-là il va servir souvent malheureusement mais je ne sais pas si tu as été suffisamment explicite

perso j'ai banni -5 et -3 de ma vie quotidienne après tout c'est pas la mer à boire de faire çà au coups par coups et de merger au besoin... enfin ce n'est que mon avis   :Wink: 

sinon j'aurais mis également une procédure pour le repair en cas de pb pour se dépatouiller je sais qu'on se débrouille avec le forum mais souvent y'a perte du X, du réseau et caetera et une panique globale sans recherche sur le forum  :Mr. Green:  ça serait utile non qu'en pensez vous ?

enfin: merci Trevoke   :Very Happy: 

----------

## apocryphe

moi j'ai jamais pris le temps de comprendre ce truc, jfais tjs depuis le debut un -3... sans savoir exactement ce que sa fais

ET CA MARCHE !

----------

## Trevoke

Je peux continuer a editer au fur et a mesure, mais en un an que j'utilise Gentoo en ~x86 et ~amd64, j'ai utilise -5 sans jamais de danger --- car je l'utilise apres avoir verifie tous les nouveaux fichiers de configuration.

Apres, si vous insistez pour emerger un baselayout-pre3-rc7-antediluvien11 c'est votre probleme.  :Smile: 

----------

## Pixys

ouai ça marche 1 fois, 2 fois, 3 fois ...et à la 7ième ça plante

 *Quote:*   

> Apres, si vous insistez pour emerger un baselayout-pre3-rc7-antediluvien11 c'est votre probleme. 

 

ben non même pas vrai!

le problème à mon avis c'est pas de savoir quel fichier va être changer (c'est facile: certain utilise leur mémoire surhumaine d'autre un papier/crayon) mais de savoir:

1)pourquoi changer/remplacer le fichier en qusetion

2)quelles répercutions va avoir ce changement de fichier (i.e. changement du nom du fichier autre part....)Last edited by Pixys on Fri Sep 02, 2005 7:17 pm; edited 1 time in total

----------

## Trevoke

Apocryphe : si tu touches a aucun fichier de configuration, ca marchera pendant un bout de temps, et apres tu tomberas sur un paquet qui ne comprend plus le vieux fichier de configuration..

----------

## boozo

 *apocryphe wrote:*   

> moi j'ai jamais pris le temps de comprendre ce truc, jfais tjs depuis le debut un -3... sans savoir exactement ce que sa fais ET CA MARCHE !

 

whoo   :Shocked:   tu joues avec le feu là...

tu fais comme tu veux sur ta bécane mais ce n'est pas un conseil à donner au nouveau cependant   :Evil or Very Mad: 

@ Trevoke : tiens regardes celui-là  :Mr. Green:  comme quoi bien que très consciencieuse elle n'est pas généralisé cette technique... d'où ma remarque   :Wink: 

----------

## Trevoke

Bah c'est en pensant a ce genre de desastres que j'ai fait ce thread, apres ca.. On peut emmener un cheval a la riviere mais on ne peut pas le faire boire.

----------

## Pixys

 *Quote:*   

> On peut emmener un cheval a la riviere mais on ne peut pas le faire boire.

 

loooooooooool   :Very Happy:  ça doit pas etre une expression New Yorkaise!!

----------

## zarasoustra17

 *Pixys wrote:*   

>  ah! ben oui c'est normal: il a muté: c'est devenu un xdm... bon allé hop un petit formatage et un réinstallation s'impose allez zouuu fait chauffer le cpu!!!
> 
> 

 

Faut pas vous emballer les gars ma Gentoo a 2 ans et demi sans sans avoir été formatée ni réinstallée, oublier des fichiers de config et faire -5, ça m'arrive au moins une fois par mois, il suffit de réediter le(s) fichier(s) coupable(s), depuis le live cd au pire et rebooter, mon install fait 30 Go et mon système est hyper fiable et affuté avec les bonnes options ou il faut, c'est pas une petite bourde corrigeable en 3 minute qui risque de m'emmener pour quinze jours de compil....Faudrait se débarasser des habitudes windowsiennes...maintenant si ça vous plait de faire chauffer le cpu....

----------

## Pixys

c'est vrai mais c'est toujours chiant..

pour être honnête je réinstalle moins la Gentoo que xp donc tout va bien   :Very Happy: 

----------

## nemo13

Bonjour Trévoke,

 mes connaisances de gentoo étant limitées, j'ai pris pour habitude de noter tous les fichiers de conf que je modifie de mon plein grès ; puis je rajoute ceux que les mainteneurs de gentoo déplacent ou refondent.

lors de mes etc-update, je regarde tous les fichiers et les traite 1 par 1 .

Donc jusqu'à présent je pensais être à l'abris de mauvaise surprises.

Pourtant actuellement je galère pour récupérer mon réseau; ne voulant pas polluer plus longtemps ton TIP,

je n'en vais créér : [ emerge ] Hal me déplace ETH

Amicalement : jlpLast edited by nemo13 on Fri Sep 02, 2005 7:35 pm; edited 1 time in total

----------

## boozo

effectivement... on peu tous s'en laver les mains...   :Rolling Eyes:   mais moi je disais celà dans l'optique de faire qqch d'utilisable (simple méthodologiquement) pour corriger les erreurs c'est tout.

Après... c'est vous qui voyez !   :Confused: 

----------

## fb99

Deux choses:

-Pour ceux qui se trompe toujours il y a se programme qui est fait pour vous:

 *Quote:*   

> *  app-portage/cfg-update
> 
>       Latest version available: 1.7.1
> 
>       Latest version installed: [ Not Installed ]
> ...

 

il est aussi possible de voir le fichier et ce qui a Ã©tÃ© modifiÃ© en Ã©crivant le numÃ©ro du fichier dans le etc-update :

ex.

 *Quote:*   

> 
> 
> ...
> 
> * Regenerating GNU info directory index...
> ...

 

-et pour finir y'a aussi le moyen de protÃ©ger certaines ( resp. auto-updater sans demander) conf sans toujours devoir dire qu'on ne veut pas l'updater, Ã§a se passe dans   /etc/make.globals (resp /etc/make.conf) sous la rubrique CONFIG_PROTECT, CONFIG_PROTECT_MASK. Je suis pas un pro j'ai juste que Ã§a existait alors si Ã§a intÃ©resse quelqu'un je veux bien creuser.

----------

## Trevoke

Pixys : je sais pas d'ou je la sors l'expression, je sais pas de quelle langue elle vient, mais c'est pas grave, on la comprend  :Smile: 

----------

## anigel

Pour compléter ces informations sur etc-update, il faut noter que Gentoo dispose d'un second outil, qui fait peu ou prou la même chose, mais de manière plus claire (du moins je trouve ^^).

```
dispatch-conf
```

Son fonctionnement est à peu près identique à celui de etc-update, mais je le trouve d'un usage plus naturel, et d'une présentation plus "human-friendly". Après, chacun ses goûts. Et les conseils de Trevoke restent valables sur cet outil : prenez garde lorsque vous remplacez vos fichiers de conf.

D'ailleurs, et plus généralement, il vaut mieux supprimer une màj de fichier de conf (on peut toujours ré-emerger le paquet incriminé), et se retrouver avec un système en carafe, plutôt que de remplacer un fichier de conf que l'on a mis des heures à construire (et être obligé de ré-inventer la roue)...

----------

## kernelsensei

sinon ya aussi cfg-update

Pour ce qui ne savent pas si faut updater ou non, ya une methode assez simple qui marche presque tout le temps (et si ca marche pas, c'est la faut a pas de chance ..) : 

Si vous ne connaissez pas le fichier que portage veut mettre a jour, ca veut dire que vous ne l'avez jamais édité, donc vous pouvez l'ecraser sans avoir trop peur ...

----------

## nemo13

kernel-Sensei> en fait on a beau faire gaffe, ce que je trouve génant c'est les mises à jour

                       "silencieuses" de certains fichiers de conf.

( par ex mon pb réseau où sans ton aide je n'aurais pas eu l'idée d'aller tripoter le fichier

 /etc/modules.d/aliases )

----------

## TGL

 *anigel wrote:*   

> 
> 
> ```
> dispatch-conf
> ```
> ...

 

Au delà des aspects cosmétiques de l'interface (que je trouve plus agréable aussi), il y a quand même quelques différences plus fondamentales entre dispatch-conf et etc-update. 

Tout d'abord, dispatch-conf effectue des sauvegarde à chaque intervention, soit sous forme de copies "fichier.version" dans un répertoire donné, soit sous forme RCS (un gestionnaire de version monoutilisateur, un genre de mini-CVS quoi). Ces sauvegardes permettent de retrouver les fichiers écrasés un peu trop vite, ou encore les fichiers tels qu'ils avaient été installés par le paquet si on a fait n'importe quoi dedans.

Mais surtout, dispatch-conf repose pour les mises à jour sur un diff à 3 fichiers entre : 

 (1) - l'ancien fichier vanilla (le /etc/toto.conf tel qu'installé par le paquet toto-1.0)

 (2) - le nouveau fichier vanilla (le /etc/._cfg0001_toto.conf qu'y vient d'être installé par votre mise à jour vers toto-1.1)

 (3) - votre fichier customisé, dérivé de (1) (votre /etc/toto.conf actuellement en usage)

Ce que dispatch-conf propose donc, ça n'est pas simplement comme etc-update de remplacer (3) par (2) en oubliant tout au passage, mais plutôt d'intégrer à (3) les différences entre (1) et (2) :

 - si il n'y a pas de différence (toto-1.0 et toto-1.1 propose la même config par défaut), il n'y a donc rien à faire, et dispatch-conf ne vous parlera même pas de ce fichier, quand bien même vous l'auriez configuré.

 - si les différences ne concernent que des lignes de commentaires, alors dispatch-conf en fera aussi silencieusement l'intégration (pour peu qu'il soit configuré pour, voir plus bas).

 - sinon, il vous proposera un merge interactif ou ce genre de choses, comme etc-update. Mais attention, il y aura moins de lignes à merger, puisque vos customisations portant sur des lignes communes à la conf 1.0 et 1.1 seront elles déjà automatiquement intégrées.

Bon, ça sera plus clair sur un exemple...

Commençons par configurer dispatch-conf, dans /etc/dispatch-conf.conf : 

```
#

# dispatch-conf.conf

#

# Directory to archive replaced configs

archive-dir=/var/archive/config

# Use rcs for storing files in the archive directory?

# (yes or no)

use-rcs=no

# Diff for display

diff="colordiff -Nu %s %s"

# Pager for diff display

pager="less --no-init --QUIT-AT-EOF -R"

# 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=yes

# 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
```

 Ici, j'ai choisi une sauvegarde sous forme de fichiers dans le répertoire /var/archive/config, et j'ai activé toutes les options qui facilitent la vie. Oh, et puis oui, j'ai remplacé "diff" par "colordiff", parce que c'est plus joli ; si vous le faites aussi, pensez à installer ce programme ("emerge colordiff").

Maintenant, il faut savoir que dispatch-conf peut travailler sur un répertoire bidon qu'on lui passe en paramètre, au lieu des habituels /etc/ et compagnie. C'est ce qu'on va utiliser pour le test, comme ça on fait pas de bêtises. Mais dans la vraie vie, au lieu de "dispatch-conf /foo/bar/", on ferait juste "dispatch-conf".

```
% mkdir /tmp/etc

% <éditeur> /tmp/etc/toto.conf
```

 On va commencer avec un "toto.conf" comme si on venait d'installer un paquet toto-1.0 : 

```
# This is configuration file for toto

# This option roxor:

roxor=yes

# This option puxor:

puxor=no
```

 Comme c'est une première installation, il n'y a pas dispatch-conf ou autre etc-update à faire. Imaginons maintenant qu'on met à jour vers toto-1.1. Ça installe un fichier de config légèrement différent : 

```
% cp /tmp/etc/toto.conf /tmp/etc/._cfg0001_toto.conf

% <éditeur> /tmp/etc/._cfg0001_toto.conf
```

 Disons que la nouvelle version aura quelques commentaire en plus à la fin :

```
# This is configuration file for toto

# This option roxor:

roxor=yes

# This option puxor:

puxor=no

# Optionally, you can set TGL's verbosity here:

#tglverb=3
```

Il est tant de faire un premier merge avec cette nouvelle configuration : 

```
% dispatch-conf /tmp/etc/

%
```

 Ici, on n'a pas eu à intervenir, parcequ'il ne s'agit que de merger des commentaires. Mais pourtant, le boulot est bel et bien fait, les lignes ayant été ajoutées : 

```
% <éditeur> /tmp/etc/toto.conf
```

 Et on voit : 

```
# This is configuration file for toto

# This option roxor:

roxor=yes

# This option puxor:

puxor=no

# Optionally, you can set TGL's verbosity here:

#tglverb=3
```

 Bon bah on va en profiter pour augmenter un peu la valeur de "tglverb", avant d'enregistrer : 

```
...

# Optionally, you can set TGL's verbosity here:

tglverb=9
```

 Bon, maintenant, et c'est là qu'on découvre la vraie puissance de dispatch-conf, on va faire une mise à jour vers un toto-1.2, dont la conf par défaut (roxor=yes et puxor=no) a été inversée. On se refait donc encore un "._cfg0001_toto.conf" qui ressemble cette fois à ça : 

```
# This is configuration file for toto

# This option roxor:

roxor=no

# This option puxor:

puxor=yes

# Optionally, you can set TGL's verbosity here:

#tglverb=3
```

 Et on le fusionne :

```
% dispatch-conf /tmp/etc/

--- /tmp/etc/toto.conf  2005-09-03 02:10:51.000000000 +0200

+++ /tmp/etc/._mrg0001_toto.conf        2005-09-03 02:11:34.000000000 +0200

@@ -1,10 +1,10 @@

 # This is configuration file for toto

 # This option roxor:

-roxor=yes

+roxor=no

 # This option puxor:

-puxor=no

+puxor=yes

 # Optionaly, you can set TGL's verbosity here:

 tglverb=9

>> (1 of 1) -- /tmp/etc/toto.conf

>> q quit, h help, n next, e edit-new, z zap-new, u use-new

   m merge, t toggle-merge, l look-merge:
```

 On voit dispatch-conf afficher les modifications qu'il propose (changer les valeurs de "roxor" et "puxor", puisqu'elle sont changées dans la conf par défaut). Mais ce qu'il convient surtout de remarquer, c'est que notre customisation de "tglverb", elle, est conservée. Ici, etc-update aurait proposé de revenir à un ligne "#tglverb=3" telle qu'elle est dans la conf par défaut. Ça ne vous impressionne pas ? Et bah dites vous que si les lignes customizées c'était vos entrées de /etc/fstab, vous apprécieriez qu'on ne vous propose même pas de les massacrer.

Bon, après cet intermède, il est temps d'accepter les modifs proposées. On appuie donc sur "u" (use-new), et dispatch-conf quitte en enregistrant la nouvelle version. Je vous laisse regarder "man dispatch-conf" pour les autres commandes. On a donc maintenant : 

```
% cat /tmp/etc/toto.conf

 # This is configuration file for toto

 # This option roxor:

roxor=no

 # This option puxor:

puxor=yes

 # Optionaly, you can set TGL's verbosity here:

 tglverb=9
```

 Et on peut aussi jetter un oeil aux sauvegardes, où l'on retrouve nos précédentes versions de toto.conf, et la version d'origine (celle en ".dist") : 

```
% ls /var/archive/config/etc/tmp

toto.conf  toto.conf.1  toto.conf.dist
```

Et voilà pour la démo... en éspèrant qu'elle rend la chose un peu plus compréhensible. Mais si vous avez rien capté, retenez quand même au moins ça :

 - dispatch-conf fait des sauvegardes, et c'est Bien© ;

 - dispatch-conf est plus malin qu'etc-update, vous laissant moins de travail à faire manuellement, et donc moins de chances de faire des fausses manips.

Ah oui, pour finir, un bémol tout de même : la première fois qu'il voit un fichier, dispatch-conf n'a pas encore dans ces archive de sauvegarde de la précédente version du fichier standard, et ne peut donc pas faire grand chose d'intelligent (sinon les petits trucs comme la fusion de commentaires)... Ça n'est donc que à partir de la 2ème mise-à-jour d'un fichier qu'il devient intérressant. Bref, il faut l'utiliser régulièrement depuis quelques temps pour bien le juger.

EDIT très tardif : tiens, y'avait une boulette dans mon exemple...Last edited by TGL on Tue Jan 17, 2006 12:20 pm; edited 2 times in total

----------

## titoucha

Merci pour l'explication, j'ai découvert un nouvel outil.   :Smile: 

----------

## netfab

Salut,

 *TGL wrote:*   

> 
> 
> Maintenant, il faut savoir que dispatch-conf peut travailler sur un répertoire bidon qu'on lui passe en paramètre, au lieu des habituels /etc/ et compagnie.
> 
> 

 

Apparemment, pas chez moi.

Si je suis ton petit exemple à la lettre, le fichier toto.conf n'est pas modifié par la commande dispatch-conf /tmp/etc/.

Et aucune erreur en sortie, j'imagine que la commande vérifie qu'il n'y a rien à updater dans /etc, et quitte.

Mais je vous fais confiance  :Laughing:  , j'essaierai à la prochaine occasion.

Mon fichier dispatch-conf.conf (quasi-d'origine) :

 *Quote:*   

> #
> 
> # dispatch-conf.conf
> 
> #
> ...

 

Sinon, jusqu'à maintenant, j'utilisais le principe donné par kernel_sensei, et aucun problème.

Les fichiers que je reconnais, je les merge interactively.

----------

## TGL

 *NetFab wrote:*   

>  *TGL wrote:*   
> 
> Maintenant, il faut savoir que dispatch-conf peut travailler sur un répertoire bidon qu'on lui passe en paramètre, au lieu des habituels /etc/ et compagnie.
> 
>  Apparemment, pas chez moi.
> ...

 

Je vois 2 explications possibles :

 - j'avais fait une ou deux typos dans mon post, dont mettre qlqs "._cfg00001_toto.conf" (4 zéros) au lieu de "._cfg0001_toto.conf" (3 zéro). Je ne me souviens plus si c'est critique, mais tu peux réassayer avec ça corrigé.

 - la version de dispatch-conf que j'utilise viens de portage CVS, et si ça se trouve celle du portage normal diffère. Tu peux vérifier que cette histoire de répertoire de test est bien supportée en faisant : 

```
% tail -n5 /usr/sbin/dispatch-conf

if len(sys.argv) > 1:

    # for testing

    d.grind (string.join (sys.argv [1:]))

else:

    d.grind (portage.settings ['CONFIG_PROTECT'])
```

 Si pour toi les 5 lignes affichées ne sont pas celles là, alors on a un problème...

----------

## netfab

Merci, je vais essayer.

----------

## anigel

Je me pose juste une question : quel est le soft auquel se rapport ce fichier de conf ?

```
# This is configuration file for toto

# This option roxor:

roxor=yes

# This option puxor:

puxor=no

# Optionally, you can set TGL's verbosity here:

#tglverb=3
```

 :Laughing: 

----------

## TGL

 *anigel wrote:*   

> quel est le soft auquel se rapport ce fichier de conf ?

  Si tu veux tout savoir, Toto est un fork de DeepLackOfImagination qui, malgré sa remarquable stabilité, n'a jamais été integré à Portage, faute d'un quelconque contenu à installer. L'apport majeur, et le seul d'ailleurs, de Toto est ce fichier de configuration avancée, mais l'auteur hésite encore je crois sur les fonctionnalités qu'il pourrait implémenter autour.

----------

## netfab

C'est bon, çà fonctionne  :Very Happy: 

Il y avait bien un 0 en trop.

----------

## vishnoo

Itou pour cfg-update et dispatch-conf  :Smile: 

Franchement, dans la doc gentoo, des fois "on nous cache tous, on nous dis rien" :

ça me rappelle les jours où j'ai découvert au hasard des posts etcat, revdep-rebuild, eix, esearch, equery  ...

Ce serait sympa de mettre ce post dans le "Howto Howto" rubrique "Portage"

----------

## GNUtoo

 *kernel_sensei wrote:*   

> sinon ya aussi cfg-update
> 
> Si vous ne connaissez pas le fichier que portage veut mettre a jour, ca veut dire que vous ne l'avez jamais édité, donc vous pouvez l'ecraser sans avoir trop peur ...

 

euh...

pas edite nous meme

par exemple emerge les programmes necessaires et instale une imprimante sous KDE...

kde doit bien creer les fichers de configuration de cups...

----------

## GNUtoo

ps:

y'as pas un systeme de versioning pour les config...

ce serait bien plus simple a gerer

----------

## TGL

 *new_to_non_X86 wrote:*   

> y'as pas un systeme de versioning pour les config...
> 
> ce serait bien plus simple a gerer

 

Cf. un peu plus haut dans ce thread :  *TGL wrote:*   

> Tout d'abord, dispatch-conf effectue des sauvegarde à chaque intervention, soit sous forme de copies "fichier.version" dans un répertoire donné, soit sous forme RCS (un gestionnaire de version monoutilisateur, un genre de mini-CVS quoi). 

  C'est ça que tu cherches ?

----------

