Recompiler le système ne met pas à jour certains répertoires (en particulier, /etc, /var et /usr) pour y installer des fichiers de configuration nouveaux ou modifiés. Il vous faudra le faire à la main, à vue, et en utilisant à bon escient la commande diff.
Vous ne pouvez pas vous contenter de copier les fichiers de /usr/src/etc dans /etc pour que cela marche. Certains de ces fichiers doivent d'abord être “installés”. En effet le répertoire /usr/src/etc n'est pas une simple copie de ce que devrait contenir votre répertoire/etc. De plus, il y a des fichiers qui doivent être dans /etc et ne sont pas dans /usr/src/etc.
La façon la plus simple de procéder est d'installer les fichiers dans un nouveau répertoire, puis de passer en revue les différences.
Sauvegardez vos fichiers actuels dans /etc : Bien qu'en principe rien ne sera modifié automatiquement dans ce répertoire, prudence est mère de sûreté. Copiez donc votre répertoire /etc dans un endroit sûr. Quelque chose du genre:
fera l'affaire (
-R
fait une copie récursive,-p
conserve la date, les autorisations des fichiers et ainsi de suite).
Vous devez créer un jeu de répertoires provisoires pour y installer les fichiers de /etc et autres. En général, je les mets dans /var/tmp/root; il y a un certain nombre de sous-répertoires à créer. Pour ce faire, exécutez:
qui va créer l'arborescence nécessaire et y installera les fichiers. Un grand nombre des sous-répertoires créés dans /var/tmp/root seront vides et devront être supprimés. La façon la plus simple de le faire est:# cd /var/tmp/root # find -d . -type d | /usr/bin/perl -lne \ 'opendir(D,$_);@f=readdir(D);rmdir if $#f == 1;closedir(D);'
/var/tmp/root contient maintenant tous les fichiers à installer à l'endroit requis sous /. Vous devez ensuite examiner chacun de ces fichiers pour voir en quoi ils diffèrent de vos propres fichiers.
Notez que certains des fichiers qui ont été installés dans /var/tmp/root commencent par un “.” Au moment où j'écris ceci, les seuls fichiers concernés sont les fichiers d'initialisation des interpréteurs de commandes dans /var/tmp/root/ et /var/tmp/root/root/, mais il pourrait y en avoir d'autres (cela dépend de quand vous lirez ces lignes). Assurez-vous d'utiliser ls -a pour ne pas les oublier.
La manière la plus simple de procéder est d'utiliser la commande diff pour comparer deux fichiers.
Par exemple:
vous indiquera les différences entre votre fichier /etc/shells et le nouveau fichier /etc/shells. A partir de là, décidez si vous allez reporter les modifications que vous y avez apportées ou si vous allez simplement recopier le nouveau fichier.http://www.nothing-going-on.demon.co.uk/FreeBSD/make-world/dircmp.pl est une petite procédure Perl (Perl 4.036, qui est installé par défaut à partir de la version 2.0 de FreeBSD) qui compare les fichiers de deux répertoires (/etc et /var/tmp/root/etc par défaut) et liste les fichiers absents ou différents dans les deux répertoires.
Donnez au nouveau répertoire (/var/tmp/root) un nom qui inclue une date, pour pouvoir facilement comparer différentes versions : Si vous recompilez fréquemment votre système, vous devrez aussi souvent mettre à jour /etc, ce qui peut devenir une vrai corvée.
Vous pouvez accélérer le processus en gardant une copie du dernier jeu de fichiers reportés dans /etc. La procédure suivante vous suggère comment faire.
Recompilez le système comme d'habitude. Au moment de mettre à jour /etc et les autres répertoires, donnez au répertoire cible un nom basé sur la date du jour. Si vous faisiez cela le 14 Février 1998, vous pouviez procéder comme suit:
Reportez les modifications depuis ce répertoire comme décrit plus haut.
Ne supprimez pas le répertoire /var/tmp/root-980214 quand vous aurez terminé.
Quand vous chargerez la version la plus récente des sources et la recompilerez, faites de même. Vous aurez alors un nouveau répertoire, /var/tmp/root-980221 par exemple (si vous faites une mise à jour chaque semaine).
Vous pouvez maintenant voir les modifications intervenues d'une semaine à l'autre avec quelque chose comme:
qui vous donnera les différences entre tous les fichiers des deux répertoires.
Typiquement, il y aura beaucoup moins de différences qu'entre /var/tmp/root-980221/etc et /etc. Comme il y a beaucoup moins de différences, il est beaucoup plus facile de les reporter dans le répertoire /etc.
Vous pouvez maintenant supprimer le plus ancien des deux répertoires /var/tmp/root-*:
Répétez l'opération chaque fois que vous devez reporter des modifications dans /etc.
Vous pouvez utiliser la commande date(1) pour automatiser la génération des noms de répertoires. Par exemple:
crée un répertoire dont le nom dépend de l'année, du mois et du jour.
Précédent | Sommaire | Suivant |
Recompilez les sources et installez le nouveau système | Mettez à jour /dev |
Ce document, ainsi que d'autres peut être téléchargé sur ftp.FreeBSD.org/pub/FreeBSD/doc/.
Pour toutes questions à propos de FreeBSD, lisez la documentation avant de contacter <questions@FreeBSD.org>.
Pour les questions sur cette documentation, contactez <doc@FreeBSD.org>.