diff --git a/fr_FR.ISO8859-1/books/handbook/cutting-edge/Makefile b/fr_FR.ISO8859-1/books/handbook/cutting-edge/Makefile new file mode 100644 index 0000000000..be1f4f01ab --- /dev/null +++ b/fr_FR.ISO8859-1/books/handbook/cutting-edge/Makefile @@ -0,0 +1,17 @@ +# +# Build the Handbook with just the content from this chapter. +# +# $FreeBSD$ +# $Id: Makefile,v 1.1 2002-12-26 21:33:02 blackend Exp $ +# Original revision: 1.1 +# + +CHAPTERS= cutting-edge/chapter.sgml + +VPATH= .. + +MASTERDOC= ${.CURDIR}/../${DOC}.${DOCBOOKSUFFIX} + +DOC_PREFIX?= ${.CURDIR}/../../../.. + +.include "../Makefile" diff --git a/fr_FR.ISO8859-1/books/handbook/cutting-edge/chapter.sgml b/fr_FR.ISO8859-1/books/handbook/cutting-edge/chapter.sgml index dc256c80bd..c48919e96c 100644 --- a/fr_FR.ISO8859-1/books/handbook/cutting-edge/chapter.sgml +++ b/fr_FR.ISO8859-1/books/handbook/cutting-edge/chapter.sgml @@ -1,55 +1,2196 @@ - The Cutting Edge ** Traduction en Cours ** + + + + Jim + Mock + Restructuré, réorganisé, et en partie mis + à jour par + + + + + + Jordan + Hubbard + Travail original de + + + Poul-Henning + Kamp + + + John + Polstra + + + Nik + Clayton + + + + + + Questions avancées + &trans.a.fonvieille; Synopsis - + + &os; est en constant développement entre deux + versions. Pour ceux désirant toujours être + à jour, il existe plusieurs mécanismes simples pour + maintenir votre système synchronisé avec les derniers + développements. Soyez prévenus—cela ne s'adresse pas + à tout le monde! Ce chapitre vous aidera à + décider si vous voulez suivre les développements, ou vous + en tenir aux versions publiées. + + Après la lecture de ce chapitre, vous + connaîtrez: + + + La différence entre les deux branches de + développement: &os.stable; et &os.current;. + + Comment maintenir votre système à + jour avec CVSup, + CVS, ou + CTM. + + Comment recompiler et réinstaller + l'intégralité du système de base avec + la commande make world. + + + + + Avant de lire ce chapitre, vous devrez: + + + Correctement configurer votre connexion + réseau (). + + Savoir comment installer des logiciels + tiers (). + - + - &os.current; vs. &os.stable; + &os.current; contre &os.stable; + -CURRENT + -STABLE + + Il existe deux branches de développement de FreeBSD: + &os.current; et &os.stable;. Cette section détaillera + un peu chacune d'elles et décrira comment garder à + jour votre système avec chaque arborescence respective. + &os.current; sera tout d'abord traité, suivit de + &os.stable;. - Staying Current with &os; - + Se synchroniser avec la version -CURRENT de &os; + + En lisant ces lignes, gardez à l'esprit que + &os.current; représente “les tout derniers” + développement de &os;. On attend des utilisateurs + de &os.current; un degré élevé de + compétences techniques, et devraient être + capables de résoudre des problèmes système + compliqués par eux-mêmes. Si vous êtes + nouveau à &os;, pensez à deux fois avant de + l'installer. + + + Qu'est-ce que &os.current;? + instantané + + &os.current; est la toute dernière version des sources + de &os; en cours de développement. Cela inclut des + évolutions en cours, des modifications expérimentales, + et des mécanismes de transition qui feront ou ne feront pas + partie de la prochaine version officielle du logiciel. + Bien que de nombreux développeurs de &os; compilent les + sources de &os.current; quotidiennement, il arrive que + celles-ci ne soient pas compilables pendant une certaine + période de temps. Ces problèmes sont résolus + aussi rapidement que possible, mais que &os.current; soit + à l'origine d'un désastre ou de l'apport d'une nouvelle + fonctionnalité attendue peut parfois dépendre + que du moment auquel vous avez chargé le code + source. + + + + Qui a besoin de &os.current;? + + &os.current; est mis à disposition pour 3 + type de personnes: + + + + Les membres du groupe &os; qui travaillent + activement sur une partie de l'arborescence des sources + et pour qui rester constamment à jour est une + nécessité absolue. + + + + Les membres du groupe &os; qui participent + activement aux tests et sont disposés à passer du + temps à résoudre les problèmes pour + garantir que &os.current; reste aussi saine que + possible. Il y a également ceux qui désirent + faire des suggestions dans certains domaines sur les + modifications à faire et la direction + générale que prend &os;, et soumettent des + correctifs pour les implémenter. + + + + Ceux qui veulent simplement garder un oeil sur les + évolutions, ou utiliser les dernières sources comme + référence (e.g. pour les lire, + et non pour les utiliser). Ces personnes font parfois + des remarques ou contribuent au code. + + + + + + Qu'est-ce que <emphasis>n'est pas</emphasis> + &os.current;? + + + + Un raccourci pour se procurer des pré-versions + parce que vous avez entendu dire qu'il y a de nouvelles + fonctionnalités géniales et que vous voulez + être le premier du coin à les avoir. Etre le + premier à avoir la nouvelle fonctionnalité + signifie être le premier à avoir les nouveaux bogues + également. + + + + Une moyen rapide d'avoir des corrections de bogues. + N'importe quelle version de &os.current; apportera + probablement de nouveaux bogues comme elle corrigera + ceux déjà présents. + + + + Nous ne le “supportons officiellement” + en aucun cas. Nous faisons du mieux que nous pouvons + pour aider les personnes qui font vraiment partie des + trois groupes “légitimes” à qui s'adresse + &os.current;, mais nous n'avons tout simplement + “pas le temps” de fournir un support + technique. Ce n'est pas parce que nous sommes des + personnes détestables qui n'aiment pas aider les autres + (nous ne ferions pas &os; si tel était le cas), nous ne + pouvons simplement pas répondre à des centaines de + messages par jour et travailler sur + FreeBSD! Entre améliorer &os; et répondre à de + nombreuses questions sur le code expérimental, les + développeurs optent pour le premier choix. + + + + + + Utiliser &os.current; + + + -CURRENT + utilisation + + + + Inscrivez-vous à &a.current; et &a.cvsall;. + Ce n'est pas seulement une bonne idée, c'est + indispensable. Si vous n'êtes + pas sur &a.current;, vous + ne verrez pas les commentaires qui sont faits sur l'état + courant du système et vous vous retrouverez probablement + confrontés à de nombreux problèmes que + d'autres ont déjà identifié et + résolus. Encore plus grave, vous manqueriez des + bulletins importants potentiellement critiques pour la bonne + santé de votre système. + + La &a.cvsall; vous permettra de voir les courriers + de trace des soumissions de toutes les modifications + dès qu'elles sont faites et des informations + pertinentes sur les éventuels effets de bord. + + Pour vous inscrire à ces listes, envoyez un courrier + électronique à &a.majordomo; et précisez ce + qui suit dans le corps du message: + + subscribe freebsd-current +subscribe cvs-all + + Majordomo + + + Eventuellement, vous pouvez également y mettre + help et + Majordomo vous enverra des + indications complètes sur comment s'inscrire et se + désinscrire des autres listes que nous avons mises en + place. + + + + Récupérez les sources sur ftp.FreeBSD.org. Vous pouvez le + faire de trois manières: + + + + cvsup + + + cron + + + -CURRENT + Synchronisation avec CVSup + + + + Utilisez le programme cvsup + avec ce fichier supfile. + C'est la méthode recommandée, puisqu'elle + permet de récupérer la totalité + des sources la première fois et par la suite + uniquement ce qui a été modifié. + De nombreuses personnes exécutent + cvsup depuis + cron et maintiennent ainsi + automatiquement à jour leurs sources. Vous devez + personnaliser l'exemple de supfile + précédent, et configurer + cvsup pour + votre environnement. Si vous voulez faciliter cette + configuration, tapez simplement: + + &prompt.root; pkg_add -f ftp://ftp.freebsd.org/pub/FreeBSD/ports/i386/packages/Latest/cvsupit.tgz + + + + -CURRENT + Téléchargement avec ftp + + + + Utilisez ftp. L'arborescence + des sources de &os.current; est toujours + “exportée” sur: ftp://ftp.FreeBSD.org/pub/FreeBSD/FreeBSD-current/. + Certains de nos miroirs FTP autorisent également + la récupération sous forme d'archive + compressée de répertoires complet, e.g. si + vous voyez: + + usr.bin/lex + + Vous pouvez taper ce qui suit pour récupérer + tout le répertoire sous la forme d'une + archive tar: + + ftp> cd usr.bin +ftp> get lex.tar + + + + -CURRENT + Synchroniser avec + CTM + + + Utilisez CTM. Si vous + disposez d'une mauvaise connexion (connexions chères + ou seulement un accès au courrier électronique) + CTM est une bonne + solution. Cependant, c'est une source de problèmes + et peut donner lieu à des fichiers endommagés. + C'est pourquoi cette méthode est rarement + utilisée, ce qui augmente les chances que cela ne + fonctionne pas pendant d'assez longue périodes. + Nous recommandons d'utiliser + CVSup + à tout ceux disposant d'un modem 9600 bps ou + d'une connexion plus rapide. + + + + + + + Si vous récupérez les sources pour compiler + un système opérationnel, et pas simplement + pour les lire, alors récupérez + tout &os.current;, et pas + uniquement certaines portions. La raison de cela est + que diverses parties des sources dépendent de + modifications effectuées ailleurs, et si vous essayez + de compiler juste une partie des source, il est quasiment + certain que vous aurez des problèmes. + + + -CURRENT + compilation + + Avant de compiler &os.current;, lisez attentivement + le Makefile dans + /usr/src. Vous devriez au moins + lancer une première fois un make world intégral, comme + étape nécessaire à votre processus de + mise à jour. La lecture de la &a.current; vous tiendra + au courant des autres procédures de transition qui + sont parfois nécessaires lorsque nous préparons la + prochaine version. + + + + Participez! Si vous utilisez &os.current;, nous + aimerions savoir ce que vous en pensez, tout + particulièrement si vous avez des améliorations + à nous suggérer ou des correction de bogues + à nous soumettre. Les suggestions accompagnées + de code sont accueillies avec enthousiasme! + + + - + - Staying Stable with &os; - + Se synchroniser avec la version -STABLE de &os; + + + Qu'est-ce que &os.stable;? + -STABLE + + &os.stable; est notre branche de développement à + partir de laquelle sont extraites les versions majeures. + Les modifications sur cette branche se font à une allure + différente, et en supposant généralement + qu'elles ont été tout d'abord testées + sur &os.current;. Cela reste cependant + toujours une branche de développement, + et cela signifie qu'à certains moments, les sources de + &os.stable; pourront être ou pas utilisable pour une + quelconque raison. C'est tout simplement une autre branche + de mise au point, et non pas une ressource pour + l'utilisateur final. + + + + Qui a besoin de &os.stable;? + + Si vous désirez suivre ou contribuer au processus + de développement de FreeBSD, tout particulièrement si + cela à rapport avec la prochaine version de FreeBSD, alors + vous devriez penser à suivre &os.stable;. + + Bien qu'il soit vrai que les correctifs de sécurité + vont également dans la branche &os.stable;, vous + n'avez pas besoin de suivre + &os.stable; pour cela. Chaque rapport de sécurité + concernant FreeBSD explique comment corriger le problème sur + les versions affectées + Ceci n'est pas tout à fait vrai. Nous + ne pouvons continuer à supporter les anciennes versions de + FreeBSD éternellement, bien que nous les supportions + pendant de nombreuses années. Pour une description + complète de la politique de sécurité + actuelle pour les anciennes versions de FreeBSD, veuillez + consulter http://www.FreeBSD.org/security/ + + , et suivre intégralement une branche de développement + juste pour des raisons de sécurité apportera + également de nombreux changements non + désirés. + + Bien que nous tentons de nous assurer que la branche + &os.stable; soit compilable et constamment stable, cela + ne peut être garanti. De plus, alors que le code est + développé sous &os.current; avant de l'inclure dans + &os.stable;, le nombre de personnes utilisant &os.stable; + est plus nombreux que celui utilisant &os.current;, aussi + il est inévitable que des bogues et des problèmes + pourront parfois apparaître sous &os.stable; alors qu'ils + n'existaient pas sous &os.current;. + + Pour ces raisons, nous ne recommandons + pas de suivre aveuglément + &os.stable;, et est tout particulièrement important que + vous ne mettiez pas à jour des serveurs de production + sous &os.stable; sans avoir tout d'abord testé le code + dans votre environnement de travail. + + Si vous ne disposez pas des ressources pour faire + cela alors nous recommandons que vous utilisiez la version + de FreeBSD la plus récente, et que vous utilisiez le + mécanisme de mise à jour binaire pour passer d'une + version à une autre. + + + + Utiliser &os.stable; + + + -STABLE + utilisation + + + + Inscrivez-vous à &a.stable;. + Vous serez tenu au courant des dépendances de + compilation qui peuvent apparaître dans la + branche &os.stable; ou de tout autre problème + demandant une attention particulière. Les + développeurs publierons également des annonces + sur cette liste lorsqu'ils envisagent une correction ou + modification controversée, offrant la possibilité + aux utilisateurs de répondre s'ils ont des questions + à soulever en rapport avec la modification + proposée. + + La &a.cvsall; vous permettra de voir les courriers + de trace des soumissions de toutes les modifications + dès qu'elles sont faites et des informations + pertinentes sur les éventuels effets de bord. + + Pour vous inscrire à ces listes, envoyez un courrier + électronique à &a.majordomo; et précisez ce + qui suit dans le corps du message: + + subscribe freebsd-stable +subscribe cvs-all + + + Majordomo + + Eventuellement, vous pouvez également y mettre + help et + Majordomo vous enverra des + indications complètes sur comment s'inscrire et se + désinscrire des autres listes que nous avons mises en + place. + + + + Si vous installez un nouveau système et voulez qu'il + soit aussi stable que possible, vous pouvez simplement + récupérer le dernier instantané en date de + la branche à partir de ftp://releng4.FreeBSD.org/pub/FreeBSD/ + et l'installer comme tout autre version. + + Si vous faites tourner une version précédente + de &os; et que vous désirez mettre à jour via + les sources vous pouvez aisément le faire à partir + de ftp.FreeBSD.org. Cela + peut être fait de trois manières: + + + + cvsup + + + cron + + + -STABLE + Synchronisation avec CVSup + + + Utilisez le programme cvsup + avec ce fichier supfile. + C'est la méthode recommandée, puisqu'elle + permet de récupérer la totalité + des sources la première fois et par la suite + uniquement ce qui a été modifié. + De nombreuses personnes exécutent + cvsup depuis + cron et maintiennent ainsi + automatiquement à jour leurs sources. Vous devez + personnaliser l'exemple de supfile + précédent, et configurer + cvsup pour + votre environnement. Si vous voulez faciliter cette + configuration, tapez simplement: + +
&prompt.root; pkg_add -f ftp://ftp.freebsd.org/pub/FreeBSD/ports/i386/packages/Latest/cvsupit.tgz
+
+ + + -STABLE + téléchargement avec FTP + + + Utilisez ftp. L'arborescence + des sources de &os.stable; est toujours + “exportée” sur: ftp://ftp.FreeBSD.org/pub/FreeBSD/FreeBSD-stable/. + + Certains de nos miroirs FTP autorisent également + la récupération sous forme d'archive + compressée de répertoires complet, e.g. si + vous voyez: + + usr.bin/lex + + Vous pouvez taper ce qui suit pour récupérer + tout le répertoire sous la forme d'une + archive tar: + + ftp> cd usr.bin +ftp> get lex.tar + + + -STABLE + Synchroniser avec + CTM + + + Utilisez CTM. Si vous + ne disposez pas d'une connexion Internet rapide et + peu coûteuse, c'est la méthode que vous + devriez penser à utiliser. + +
+
+ + + Avant tout, si vous avez besoin d'un accès rapide + à la demande aux sources et que la bande passante n'est + pas un problème, utilisez + cvsup ou ftp. + Sinon, utilisez CTM. + + + + -STABLE + compilation + + + Avant de compiler &os.stable;, lisez attentivement + le Makefile dans + /usr/src. Vous devriez au moins + lancer une première fois un make world intégral, comme + étape nécessaire à votre processus de + mise à jour. La lecture de la &a.stable; vous tiendra + au courant des autres procédures de transition qui + sont parfois nécessaires lorsque nous préparons la + prochaine version. + +
+
- Synchronizing Your Source - + Synchroniser vos sources + + Il existe différentes façons d'utiliser une connexion + Internet (ou le courrier électronique) pour garder à jour + les sources de n'importe quelle partie, ou de l'ensemble, + du projet &os;, selon ce qui vous intéresse. Les + principaux services que nous fournissons sont le + CVS anonyme, CVSup, et CTM. + + + Alors qu'il est possible de mettre à jour seulement + certaines parties de l'arbre des sources, la seule procédure + de mise à jour supportée est celle consistant + à mettre à jour l'intégralité de + l'arborescence et de recompiler les sources des applicatifs de + base—“userland” (i.e., tous les programmes + qui tournent dans l'espace utilisateur, comme ceux des + répertoires /bin et + /sbin) et du noyau. Ne mettre à jour + qu'une partis des sources, uniquement le noyau, ou seul le + “userland” mènera souvent à des + problèmes. Ces problèmes pourront aller d'erreurs de + compilation à des paniques du noyau ou même des + corruptions de données. + + + CVS anonyme + CVS anonyme et + CVSup utilisent une méthode de + mise à jour pilotée par le + client—pull. Dans le cas de + CVSup, l'utilisateur (ou une + procédure cron) appelle le programme + cvsup, qui interagit avec un serveur + cvsupd distant, pour mettre à jour vos + fichiers. Les mises à jour que vous recevez sont les plus + récentes, et vous ne les recevez seulement lorsque vous le + désirez. Vous pouvez aisément restreindre vos mises + à jour aux fichiers ou répertoires particuliers + qui vous intéressent. Les mises à jour sont + générées à la volée par le serveur, + en fonction de ce que vous avez déjà et de ce que vous + voulez. CVS anonyme est plus + simpliste que CVSup, car ce n'est + qu'une extension de CVS qui + permet de récupérer des modifications directement + d'une archive CVS distante. Pour cela, + CVSup est bien plus efficace mais + CVS anonyme est plus facile à + utiliser. + + + CTM + + CTM, à l'inverse, ne compare + pas interactivement les sources dont vous disposez avec celles + qui sont sur l'archive de référence. Au lieu de cela, + une procédure qui identifie les modifications intervenues + depuis qu'elle a été exécutée pour la + dernière fois, est lancée plusieurs fois par jour + sur la machine CTM de référence (maître), + les modifications détectées sont + compressées, affectées d'un numéro de + séquence et encodées pour pouvoir être envoyées + par courrier électronique (en ASCII imprimable uniquement). + Une fois reçus, ces “deltas CTM” peuvent + être passés à l'utilitaire &man.ctm.rmail.1; + qui décodera, contrôlera et appliquera automatiquement + les modifications à l'exemplaire des sources de l'utilisateur. + Cette méthode est beaucoup plus efficace que + CVSup et consomme beaucoup moins de + ressources sur notre serveur, parce que c'est un modèle + piloté par le serveur—push + plutôt que par + l'utilisateur—pull. + + Il y a, bien sûr, quelques contreparties. + Si vous effacez par inadvertance des parties de votre archive, + CVSup s'en apercevra et vous + reconstruira les parties endommagées. + CTM ne le fera pas, et si vous + effacez des parties de votre l'arborescence des sources + (et que vous n'avez pas fait de sauvegarde) alors vous devrez + repartir de zéro (à partir du plus récent + “delta de base” CVS) et tout reconstituer avec + CTM ou CVS + anonyme, effacer les parties endommagées et + resynchroniser. - Using <command>make world</command> - + Utiliser <command>make world</command> + + + make world + + Une fois que vous avez synchronisé votre arborescence des + sources avec une version donnée de &os; (&os.stable;, + &os.current;, et ainsi de suite) vous pouvez alors utiliser + cette arborescence des sources pour recompiler le + système. + + + Faites une sauvegarde + + On n'insistera jamais assez sur l'importance de faire une + sauvegarde de votre système avant tout + autre chose. Bien qu'il soit facile de “refaire le + monde” (recompiler FreeBSD), si vous suivez ces + instructions, vous ferez inévitablement des erreurs + à un moment ou un autre, ou d'autres feront des erreurs + au niveau de l'arborescence des sources qui empêcheraient + votre système de redémarrer. + + Assurez-vous que vous avez bien fait une sauvegarde. Ayez + une disquette de maintenance à portée de la main. + Vous ne l'utiliserez probablement pas, mais prudence est mère + de sûreté! + + + + S'abonner à la bonne liste de diffusion + + liste de diffusion + Les branches &os.stable; et &os.current; sont, par + nature, en développement. Les personnes + qui participent à &os; sont des humains, et + des erreurs se produisent occasionnellement. + + Ces erreurs sont parfois bénignes, provocant + simplement l'affichage d'un nouveau message d'avertissement + par votre système. Elles peuvent aussi être + catastrophiques, et empêcher votre système de + redémarrer ou détruire vos systèmes de fichiers + (ou pire). + + Quand de tels problèmes se produisent, un avertissement + “heads up” est posté sur la liste de diffusion + appropriée, décrivant la nature du problème et + quels systèmes sont concernés. Un message “all + clear” est posté quand le problème est + résolu. + + Si vous tentez de suivre &os.stable; ou &os.current; et + que vous ne lisez pas la &a.stable; ou la &a.current;, + vous allez au devant d'ennuis. + + + + Lire <filename>/usr/src/UPDATING</filename> + + Avant tout autre chose, lisez + /usr/src/UPDATING (ou le fichier + équivalent en fonction de l'endroit où se trouve vos + sources). Ce fichier devrait contenir les informations + importantes au sujet des problèmes que vous pourriez + rencontrer, ou indique l'ordre dans lequel vous devriez + exécuter certaines commandes. Si le fichier + UPDATING contredit quelque chose d'écrit + ici, UPDATING prime sur tout le + reste. + + + La lecture du fichier UPDATING + n'est pas un substitut à l'abonnement à la liste + de diffusion correcte, comme décrit + précédemment. Ces deux prérequis sont + complémentaires, et non pas exclusifs. + + + + + Contrôler <filename>/etc/make.conf</filename> + + make.conf + + + Contrôlez les fichiers + /etc/defaults/make.conf et + /etc/make.conf. Le premier contient + des paramètres par défaut – la plupart + étant placés en commentaires. Pour les utiliser quand + vous recompilez votre système à partir des sources, + rajoutés-les au fichier /etc/make.conf. + Gardez à l'esprit que tout ce que vous ajoutez au fichier + /etc/make.conf est utilisé chaque fois + que vous invoquez la commande make, il est + donc bon de s'assurer que les valeurs par défaut sont + appropriées à votre système. + + Un utilisateur typique voudra probablement copier + les lignes CFLAGS et + NOPROFILE se trouvant dans + /etc/defaults/make.conf vers + /etc/make.conf et les décommenter. + + Examinez les autres définitions + (COPTFLAGS, NOPORTDOCS + et ainsi de suite) et décidez si elles vous conviennent. + + + + Mettre à jour les fichiers dans <filename>/etc</filename> + + Le répertoire /etc contient la + plupart des informations de configuration de votre système, + ainsi que les procédures de démarrage. Certaines de ces + procédures changent d'une version à l'autre de + FreeBSD. + + Certains fichiers de configuration sont également + utilisés en permanence par le système. En particulier + /etc/group. + + Il est arrivé que la phase d'installation de “make + world” ait besoin que certains utilisateurs et groupes + existent. Il y a de fortes chances qu'ils n'aient pas + été définis avant la mise à jour. + C'est une source de problèmes. + + Un exemple récent de cela fut l'addition de l'utilisateur + smmsp. Le processus d'installation + échouait quand mtree tentait de créer + /var/spool/clientmqueue. + + La solution est d'examiner le fichier + /usr/src/etc/group et de comparer sa + liste de groupe avec la votre. S'il y a des groupes dans le + nouveau fichier qui sont absent du votre, alors rajoutez-les. + De même vous devriez renommer tous les groupes dans + /etc/group qui ont le même GID mais un nom + différent que ceux présent dans + /usr/src/etc/group. + + Depuis 4.6-RELEASE vous pouvez exécuter + &man.mergemaster.8; dans le mode pré-“buildworld” + en ajoutant l'option . Cela effectuera la + comparaison uniquement des fichiers essentiels pour le succès + de la procédure buildworld ou + installworld. Si votre vieille + version de mergemaster ne supporte pas + l'option , utilisez la nouvelle version + présente dans l'arborescence des sources quand vous + l'exécutez pour la première fois: + + &prompt.root; cd /usr/src/usr.sbin/mergemaster +&prompt.root; ./mergemaster.sh -p + + + Si vous êtes particulièrement paranoïaque, + vous pouvez contrôler votre système afin de voir quels + fichiers appartiennent au groupe que vous renommez ou + effacez: + + &prompt.root; find / -group GID -print + + affichera les fichiers appartenant au groupe + GID (qui peut être soit un nom de + groupe ou un identifiant numérique de groupe). + + + + + Passer en mode mono-utilisateur + mode mono_utilisateur + + Il vaut mieux recompiler le système en mode + mono-utilisateur. En dehors du fait que cela sera + légèrement plus rapide, la réinstallation + va modifier un grand nombre de fichiers systèmes + importants, tous les binaires de base du système, les + bibliothèques, les fichiers d'include et ainsi de suite. + Les modifier sur un système en fonctionnement (en + particulier s'il y a des utilisateurs connectés à + ce moment là), c'est aller au devant de + problèmes. + + mode multi-utilisateurs + Une autre méthode consiste à compiler le + système en mode multi-utilisateurs, et passer dans le mode + mono-utilisateur pour l'installation. Si vous désirez + utiliser cette méthode, conservez les étapes suivantes + pour le moment où la compilation sera terminée. Vous + pouvez reporter le passage en mode mono-utilisateur jusqu'à + l'exécution de + installkernel ou + installworld. + + En tant que super-utilisateur, vous pouvez exécuter la + commande: + + &prompt.root; shutdown now + + sur un système en fonctionnement, pour passer en mode + mono-utilisateur. + + Ou bien, redémarrer le système, et à + l'invite de démarrage, entrez l'indicateur + . Le système démarrera alors + en mode mono-utilisateur. A l'invite de l'interpréteur de + commandes, exécutez alors: + + &prompt.root; fsck -p +&prompt.root; mount -u / +&prompt.root; mount -a -t ufs +&prompt.root; swapon -a + + Cela effectue une vérification des systèmes + de fichiers, remonte / en mode + lecture/écriture, et monte tous les autres systèmes + de fichiers UFS listés dans le fichier + /etc/fstab, puis active la + pagination. + + + Si votre horloge CMOS est réglée sur l'heure locale + et non pas sur le fuseau GMT (cela est vrai si la sortie + de la commande date ne donne pas l'heure + et le fuseau correct), vous aurez également peut-être + besoin d'exécuter la commande suivante: + +&prompt.root; adjkerntz -i + + Cela permettra de s'assurer que vos paramètres + de fuseaux horaires sont correctement configurés — + sans cela, vous risquez de faire face, plus tard, à des + problèmes. + + + + + + + Effacer <filename>/usr/obj</filename> + + Au fur et à mesure que les différentes parties + du système sont recompilées, elles sont + placées dans des répertoires qui (par défaut) sont + sous /usr/obj. Les répertoires sont + agencés comme sous /usr/src. + + Vous pouvez accélérer le processus “make + world”, et également vous éviter d'éventuels + problèmes de dépendances en effaçant ce + répertoire. + + Certains fichiers dans /usr/obj + peuvent avoir l'indicateur immuable positionné (consultez la + page de manuel &man.chflags.1; pour plus d'informations) + qui doit être retiré en premier. + + &prompt.root; cd /usr/obj +&prompt.root; chflags -R noschg * +&prompt.root; rm -rf * + + + + Recompiler les sources + + + Enregistrer la sortie + + C'est une bonne idée d'enregistrer la sortie de + &man.make.1; dans un fichier. Si quelque chose se passe + mal, vous aurez une trace des messages d'erreur. Même + si cela ne vous aide pas à diagnostiquer ce qui n'a pas + fonctionné, cela peut aider les autres si vous postez + votre problème sur une des listes de diffusion de + &os;. + + La méthode la plus aisée pour faire cela est + d'utiliser la commande &man.script.1;, avec en paramètre + le nom du fichier où enregistrer les résultats. + Vous devez faire cela immédiatement juste avant de + recompiler le système, et taper exit + une fois que c'est terminé. + + &prompt.root; script /var/tmp/mw.out +Script started, output file is /var/tmp/mw.out +&prompt.root; make TARGET +… compile, compile, compile … +&prompt.root; exit +Script done, … + + Si vous le faites, n'enregistrez pas + le résultat dans /tmp. + Ce répertoire peut être vidé au prochain + redémarrage du système. Un meilleur endroit de + sauvegarde est /var/tmp (comme dans l'exemple + précédent) ou dans le répertoire utilisateur + de root. + + + + Compiler et installer le nouveau système + + Vous devez être dans le répertoire + /usr/src: + + &prompt.root; cd /usr/src + + (à moins, bien sûr, que votre code source ne + soit ailleurs, auquel cas vous devrez aller dans le + répertoire correspondant). + make + + Pour recompiler le système, on utilise la commande + &man.make.1;. Cette commande lit ses instructions dans + le fichier Makefile, qui décrit comment + devrez être reconstruis les programmes qui constituent + &os;, dans quel ordre, et ainsi de suite. + + Le format général de la ligne de commande que + vous taperez sera la suivante: + + &prompt.root; make -x -DVARIABLE cible + + Dans cet exemple, + est une + option que vous passez à &man.make.1;. Reportez-vous + à la page de manuel pour un exemple d'options que vous + pouvez passer. + + + transmet un variable au fichier + Makefile. Le comportement du + Makefile est défini par ces variables. + Ce sont les mêmes variables que l'on trouve dans + /etc/make.conf, et c'est un autre moyen + de les positionner. + + &prompt.root; make -DNOPROFILE cible + + est une autre manière de dire qu'il ne faut pas compiler + les bibliothèques profilées et correspond à + la ligne: + + NOPROFILE= true # Avoid compiling profiled libraries + + dans /etc/make.conf. + + cible indique à &man.make.1; + ce que vous voulez faire. Chaque + Makefile définit un certain nombre de + “cibles”, et votre choix de cible détermine ce + qui se passe. + + Certaines cibles listées dans le fichier + Makefile, ne doivent pas être + employées. Ce sont des étapes intermédiaires + utilisées par le processus de recompilation pour + décomposer les étapes importantes de la recompilation + du système en sous-étapes. + + La plupart du temps, vous n'aurez pas besoin de passer + de paramètres à &man.make.1;, et votre commande + ressemblera à ceci: + + &prompt.root; make cible + + A partir de la version 2.2.5 de &os; (en fait, c'est + apparu en premier sur la branche &os.current;, et ensuite + intégré dans la branche &os.stable; entre les + versions 2.2.2 et 2.2.5) la cible world a + été décomposée en deux parties: + buildworld et + installworld. + + Comme leurs noms l'indiquent, + buildworld reconstruit la nouvelle + arborescence dans /usr/obj, et + installworld l'installe sur la + machine. + + Ceci est très utile pour deux raisons. Tout d'abord + cela vous permet de recompiler en tout sûreté en sachant + qu'aucun composant du système actuel ne sera affecté. + La compilation est “autonome”. En raison de + cela vous pouvez exécuter + buildworld sur une machine en mode + multi-utilisateurs sans redouter d'effets fâcheux. Il est + néanmoins recommandé de toujours exécuter + l'étape installworld en mode + mono-utilisateur. + + En second lieu, cela vous permet d'utiliser des + systèmes montés par NFS pour mettre à + jour plusieurs machines de votre réseau. Si vous avez + trois machines A, B et + C que vous voulez mettre à jour, + exécutez make buildworld et + make installworld sur A. + B et C doivent + ensuite monter par NFS /usr/src + et /usr/obj depuis A, + et vous pouvez alors exécuter + make installworld pour installer le + système recompilé sur B et + C. + + Bien que la cible world existe + toujours, vous êtes fortement encouragé + à ne pas l'utiliser. + + Exécutez: + + &prompt.root; make buildworld + + Il est maintenant possible de passer l'option + à &man.make.1; ce qui lui permettra + d'exécuter plusieurs processus simultanément. + C'est particulièrement utile sur une machine avec plusieurs + processeurs. Cependant, comme la compilation est plus + gourmande en E/S plutôt qu'en CPU, c'est également + utile sur des machines mono-processeur. + + Typiquement sur une machine mono-processeur, vous + exécuteriez: + + &prompt.root; make -j4 buildworld + + &man.make.1; pourra exécuter jusqu'à 4 processus + simultanément. Des constatations empiriques + postées sur les listes de diffusion montrent que c'est + en général ce qui apporte le plus de gain en + performances. + + Si vous avez une machine multi-processeurs et que vous + avez configuré un noyau SMP, essayez des valeurs entre 6 et + 19 et voyez quel bénéfice vous en tirez. + + Soyez conscient que c'est toujours quelque peu + expérimental, et que des modifications de l'arborescence + des sources rendent parfois cette possibilité inutilisable. + Si la recompilation échoue avec ce paramètre, essayez + sans avant de signaler votre problème. + + + + Durée + + make world + durée + + + De nombreux facteurs influencent la durée de + compilation, mais actuellement un Pentium III à + 500 MHz avec 128 MO de RAM met environ + 2 heures pour compiler l'arborescence &os.stable;, + sans modification ni raccourcis durant le processus. + Une arborescence &os.current; nécessitera un peu plus de + temps. + + + + + Compiler et installer un nouveau noyau + + noyau + compilation + + + Pour tire pleinement parti de votre nouveau système, + vous devrez recompiler le noyau. C'est pratiquement + indispensable, parce que certaines structures mémoires + peuvent avoir changées, et des programmes comme &man.ps.1; + et &man.top.1; ne fonctionneront pas tant que le système + et le noyau n'utilisent pas les mêmes versions de code + source. + + La manière la plus simple et la plus sûre est de + compiler et installer un noyau basé sur le noyau + GENERIC. Alors que le noyau + GENERIC peut ne pas comporter les pilotes + de périphériques nécessaires pour votre + système, il devrait contenir tout ce qui est + nécessaire pour faire démarrer votre système + en mode mono-utilisateur. C'est une bonne façon de tester + le fonctionnement de votre nouveau système. Après + avoir démarré à partir du noyau + GENERIC et vérifié que + votre système fonctionne vous pouvez alors compiler un nouveau + noyau basé sur votre fichier de configuration normal du + noyau. + + Si vous mettez à jour vers &os; 4.0 ou suivante + alors l'ancienne procédure de compilation du noyau (comme + décrit dans ) est + obsolète. A la place, vous devriez utiliser les commandes + suivantes après que vous ayez + recompilé le système + avec buildworld. + + + Si vous désirez compiler un noyau personnalisé, + et que vous avez déjà un fichier de + configuration, utilisez juste + KERNCONF=MONNOYAU + comme suit: + + &prompt.root; cd /usr/src +&prompt.root; make buildkernel KERNCONF=MONNOYAU +&prompt.root; make installkernel KERNCONF=MONNOYAU + + Sous FreeBSD 4.2 et versions antérieures vous + devez remplacer KERNCONF= par + KERNEL=. Une version 4.2-STABLE qui a + été récupérée après + le 2 février 2001 reconnaît le paramètre + KERNCONF=. + + + Notez que si vous avez augmenté la variable + kern.securelevel à une valeur + supérieure à 1 et que vous + avez positionné l'indicateur noschg + ou similaire sur votre noyau, il sera intéressant de passer + en mode mono-utilisateur pour utiliser + installkernel. Sinon vous devriez + être en mesure d'exécuter ces commandes à + partir du mode multi-utilisateur sans problèmes. Voir + la page de manuel de &man.init.8; pour plus de détails + à propos de kern.securelevel et la page + &man.chflags.1; pour des informations sur les différents + indicateurs de fichiers. + + Si vous mettez à jour vers une version de &os; + antérieure à la 4.0, vous devriez utiliser l'ancienne + procédure de compilation du noyau. Cependant, il est + recommandé d'utiliser la nouvelle version de + &man.config.8;, en utilisant une ligne de commande comme + celle-ci: + + &prompt.root; /usr/obj/usr/src/usr.sbin/config/config KERNELNAME + + + + Redémarrer en mode mono-utilisateur + mode mono-utilisateur + + Vous devriez redémarrer en mode mono-utilisateur pour + tester le fonctionnement du nouveau noyau. Pour cela suivez + les instructions de + . + + + + Installer les nouveaux binaires système + + Si vous avez compilé une version de &os; assez + récente pour avoir utilisé + make buildworld alors vous devriez + utiliser maintenant installworld + pour installer les nouveaux binaires système. + + Lancez: + + &prompt.root; cd /usr/src +&prompt.root; make installworld + + + Si vous spécifiez des variables sur la + ligne de commande de make buildworld, + vous devez utiliser les mêmes variables avec la commande + make installworld. Cela ne reste + pas forcément vrai pour d'autres options; par exemple, + ne doit jamais être utilisée + avec installworld. + + Par exemple, si vous exécutez: + + &prompt.root; make -DNOPROFILE buildworld + + vous devrez ensuite installer les résultats avec: + + &prompt.root; make -DNOPROFILE installworld + + sinon il essayera d'installer les bibliothèques + profilées qui n'ont pas été + recompilées à l'étape + make buildworld. + + + + + Mettre à jour les fichiers non modifiés par + <command>make world</command> + + La recompilation du système ne mettra pas à + jour certains répertoires (en particulier, + /etc, /var et + /usr) avec les fichiers nouveaux + ou modifiés. + + La manière la plus simple de mettre à jour + ces fichiers est d'utiliser &man.mergemaster.8;, bien + qu'il soit possible de le faire manuellement si vous le + désirez. Indépendamment de la manière + que vous choisissez, assurez-vous de faire une sauvegarde + du répertoire /etc au cas + où quelque chose se passerait mal. + + + <command>mergemaster</command> + mergemaster + + L'utilitaire &man.mergemaster.8; est une procédure Bourne + qui vous aidera a déterminer les différences entre + vos fichiers de configuration dans le répertoire + /etc, et les fichiers de configuration + dans l'arborescence des sources + /usr/src/etc. C'est la solution + recommandée pour maintenir à jour les fichiers de + configuration du système avec ceux situés + dans l'arborescence des sources. + + L'outil &man.mergemaster.8; a été + intégré dans la base de FreeBSD entre la version + 3.3-RELEASE et la version 3.4-RELEASE, ce qui signifie + qu'il est présent dans tous les systèmes + -STABLE et -CURRENT depuis la version 3.3. + + Pour commencer, tapez simplement + mergemaster à l'invite, et observez-le + travailler. mergemaster commencera à + constituer une arborescence temporaire, à partir de + /, et la remplira avec divers fichiers + de configuration. Ces fichiers sont alors comparés avec + ceux actuellement installés sur votre système. + A ce point, les fichiers qui diffèrent seront + affichés dans le format &man.diff.1;, avec le signe + représentant les lignes modifiées + ou ajoutées, et le représentant + les lignes qui seront soit complètement supprimées, + soit remplacées avec une nouvelle ligne. + Voir la page de manuel &man.diff.1; pour plus d'informations + au sujet de la syntaxe &man.diff.1; et comment sont affichées + les différences. + + &man.mergemaster.8; vous affichera ensuite chaque fichier + présentant des différences, et vous aurez + à ce moment-là le choix de soit supprimer le + nouveau fichier (le fichier temporaire), soit d'installer + le fichier temporaire non modifié, soit de fusionner + le fichier temporaire et le fichier actuellement installé, + soit enfin de revoir les résultats de l'opération + &man.diff.1;. + + Choisir de supprimer le fichier temporaire indiquera à + &man.mergemaster.8; que nous désirons conserver notre + fichier actuel intacte, et effacera la nouvelle version. + Cette option n'est pas recommandée, à moins + que vous ne voyez aucune raison de modifier le fichier actuel. + Vous pouvez obtenir de l'aide à n'importe quel moment en + tapant ? à l'invite de &man.mergemaster.8;. + Si l'utilisateur choisit de passer un fichier, il sera + présenté à nouveau une fois que tous les + autres fichiers auront été traités. + + Choisir d'installer un fichier temporaire intact + remplacera le fichier actuel avec le nouveau. Pour la plupart + des fichiers non modifiées, c'est la meilleure option. + + Choisir de fusionner le fichier, vous affichera un éditeur + de texte, et le contenu des deux fichiers. Vous pouvez + maintenant les fusionner en les visionnant côte + à côte sur l'écran, et en sélectionnant + des parties des deux fichiers pour créer un fichier final. + Quand les fichiers sont comparés côte à + côte, la touche l sélectionnera le + contenu de gauche et la touche r + sélectionnera celui de droite. + Le résultat final sera un fichier constitué des deux + parties, qui peut alors être installé. + Cette option est habituellement utilisée pour les fichiers + où les des paramètres ont été + modifiés par l'utilisateur. + + Choisir de revoir les résultats de l'opération + &man.diff.1; vous affichera les différences entre fichiers + tout comme la fait &man.mergemaster.8; avant de vous demander + un choix. + + Après que &man.mergemaster.8; en ait terminé avec + les fichiers système, il vous proposera de nouvelles + opérations. &man.mergemaster.8; vous demandera si vous + désirez reconstruire le fichier des mots de passe et/ou + exécuter &man.MAKEDEV.8; si vous utilisez une version de + FreeBSD antérieure à la 5.0, et terminera avec la + possibilité de supprimer les fichiers temporaires + restants. + + + + Mise à jour manuelle + + Si vous désirez faire la mise à jour manuellement, + vous ne pouvez cependant pas vous contenter de copier + les fichiers de /usr/src/etc dans + /etc pour que cela fonctionne. Certains + de ces fichiers doivent d'abord être + “installés”. + En effet le répertoire /usr/src/etc + “n'est pas” une copie de ce que devrait contenir + votre répertoire /etc. De plus, + il a des fichiers qui doivent être dans + /etc et qui ne sont pas dans + /usr/src/etc. + + Si vous utilisez &man.mergemaster.8; (comme recommandé), + vous pouvez passer directement à la section suivante. + + 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 votre répertoire + <filename>/etc</filename> actuel + + 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: + + &prompt.root; cp -Rp /etc /etc.old + + conviendra; l'option fait une copie + récursive, préserve la date, les + autorisations des fichiers et ainsi de suite. + + + Vous devez créer un ensemble de répertoires + provisoires pour y installer les de /etc + et autres. /var/tmp/root est un bon + choix, il y a un certain nombre de sous-répertoires + à créer également: + + &prompt.root; mkdir /var/tmp/root +&prompt.root; cd /usr/src/etc +&prompt.root; make DESTDIR=/var/tmp/root distrib-dirs distribution + + Cela 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 + sont vides et devront être supprimés. + La façon la plus simple de le faire est: + + &prompt.root; cd /var/tmp/root +&prompt.root; find -d . -type d | xargs rmdir 2>/dev/null + + Ceci supprimera tous les répertoires vides (la sortie + d'erreur standard est redirigée vers + /dev/null pour empêcher les + avertissements à propos des répertoires non + vides). + + /var/tmp/root contient maintenant + tous les fichiers à installer à l'endroit requis sous + /. Vous devez maintenant examiner chacun + de ces fichiers pour déterminer en quoi ils diffèrent + de vos propres fichiers. + + Notez que certains des fichiers qui seront installés + dans /var/tmp/root commencent par un + “.”. Au moment où sont écrites ces + lignes, 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 la commande ls + -a pour ne pas les oublier. + + La manière la plus simple de procéder est + d'utiliser la commande &man.diff.1; pour comparer les deux + fichiers: + + &prompt.root; diff /etc/shells /var/tmp/root/etc/shells + + Cela vous indiquera les différences entre votre fichier + /etc/shells et le nouveau fichier + /var/tmp/root//etc/shells. A partir de + là, décidez si vous aller reporter les modifications + que vous y avez apportée ou si vous allez simplement + recopier le nouveau fichier. + + + Donnez au nouveau répertoire racine + (<filename>/var/tmp/root</filename>) un nom qui inclue une + date, pour pouvoir facilement comparer les différentes + versions + + Si vous recompilez fréquemment votre système, + cela signifie que vous devez également souvent + mettre à jour le répertoire /etc, + ce qui peut rapidement devenir une corvée. + + Vous pouvez accélérer le processus en + conservant une copie du dernier ensemble de fichiers + modifiés que vous avez reportés dans + /etc. La procédure suivante + présente une façon de faire. + + + + Recompilez le système comme à + l'accoutumé. Au moment de mettre à jour + /etc et les autre 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 pourriez procéder comme suit: + + &prompt.root; mkdir /var/tmp/root-19980214 +&prompt.root; cd /usr/src/etc +&prompt.root; make DESTDIR=/var/tmp/root-19980214 \ + distrib-dirs distribution + + + + Reporter les modifications depuis ce répertoire + comme décrit plus haut. + + Ne supprimez pas le + répertoire /var/tmp/root-19980214 + quand vous aurez terminé. + + + + Quand vous récupérez la dernière + version des sources et la recompilerez, suivez l'étape + 1. Vous aurez alors un nouveau répertoire, qui + pourrait s'appeler /var/tmp/root-19980221 + (si vous faites une mise à jour chaque semaine). + + + + Vous pouvez maintenant voir les modifications + intervenues d'une semaine à l'autre en utilisant + &man.diff.1; pour afficher les différences entre tous + les fichiers deux répertoires: + + &prompt.root; cd /var/tmp +&prompt.root; diff -r root-19980214 root-19980221 + + Généralement, il y aura beaucoup moins de + différences qu'entre + /var/tmp/root-19980221/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-*: + + &prompt.root; rm -rf /var/tmp/root-19980214 + + + + Répétez l'opération chaque fois que vous devez + reporter des modifications dans + /etc. + + + + Vous pouvez utiliser &man.date.1; pour automatiser la + génération des noms de répertoires: + + &prompt.root; mkdir /var/tmp/root-`date "+%Y%m%d"` + + + + + + Mettre à jour <filename>/dev</filename> + + + DEVFS + DEVFS + Si vous utilisez FreeBSD 5.0 ou suivante + vous pouvez sans risque passer cette section. Ces versions + utilisent &man.devfs.5; pour allouer les fichiers spéciaux + de périphériques de façon transparente pour + l'utilisateur. + + + Dans la plupart des cas, l'outil &man.mergemaster.8; + déterminera quand il sera nécessaire de mettre à + jour les fichiers spéciaux de périphériques, + et proposera de le faire automatiquement. Les instructions + suivantes expliquent comment mettre à jour les fichiers + spéciaux de périphériques manuellement. + + Pour des raisons de sécurité, cette mise + à jour se fait en plusieurs étapes. + + + + Copiez /var/tmp/root/dev/MAKEDEV dans + /dev: + + &prompt.root; cp /var/tmp/root/dev/MAKEDEV /dev + + MAKEDEV + + + Si vous avez utilisé &man.mergemaster.8; pour + mettre à jour /etc, alors votre + procédure MAKEDEV a dû + déjà être mise à jour, + bien que cela ne peut pas faire de mal de la contrôler + (avec &man.diff.1;) et la copier manuellement si + nécessaire. + + + + Maintenant, prenez une photographie de l'état de + votre répertoire /dev. Cette + photographie doit contenir les droits, propriétaires et + les codes majeur et mineur de fichier spécial de + périphérique, mais pas leur date de + dernière mise à jour. La façon la plus + aisée de procéder est d'utiliser la commande + &man.awk.1; pour éliminer les informations + inutiles: + + &prompt.root; cd /dev +&prompt.root; ls -l | awk '{print $1, $2, $3, $4, $5, $6, $NF}' > /var/tmp/dev.out + + + + Recréez tous les fichiers spéciaux de + périphériques: + + &prompt.root; sh MAKEDEV all + + + + Reprenez une autre photographie du répertoire, cette + fois-ci dans /var/tmp/dev2.out. + Comparez maintenant ces deux fichiers pour voir si + certains fichiers spéciaux de + périphériques manquant n'ont pas + été créés. Cela ne devrait pas + être le cas, mais prudence est mère de + sûreté. + + &prompt.root; diff /var/tmp/dev.out /var/tmp/dev2.out + + Il manquera peut-être des descripteurs de partitions, + il vous faudra alors exécuter des commandes du + type: + + &prompt.root; sh MAKEDEV sd0s1 + + pour les recréer. Les détails dépendent + de votre installation. + + + + + + Mettre à jour <filename>/stand</filename> + + + Cette étape n'est décrite que pour être + exhaustif. Elle peut être omise sans risque. + + + Pour être exhaustif, vous pouvez également mettre + à jour les fichiers du répertoire + /stand. Ces fichiers sont des liens + physiques vers le binaire + /stand/sysinstall. Cet exécutable + doit être compilé en statique, pour qu'il soit + utilisable sans qu'aucun autre système de fichiers + (et en particulier /usr) ne soit + monté. + + &prompt.root; cd /usr/src/release/sysinstall +&prompt.root; make all install + + + + Redémarrer + + Vous en avez terminé. Après avoir + vérifié que tout semble être en place, vous + pouvez alors redémarrez votre système. Un simple + &man.fastboot.8; devrait suffire: + + &prompt.root; fastboot + + + + C'est fini + + Vous devriez maintenant avoir mis à jour avec + succès votre système &os;. Félicitations. + + Si les choses se sont légèrement mal + passées, il est facile de recompiler un élément + particulier du système. Par exemple, si vous avez + accidentellement effacé /etc/magic + lors de la mise à jour de /etc, la + commande &man.file.1; ne fonctionnerait plus. Dans ce cas, + la solution serait d'exécuter: + + &prompt.root; cd /usr/src/usr.bin/file +&prompt.root; make all install + + + + Questions + + + + + Dois-je refaire le monde à chaque + évolution? + + + + Il n'y a pas de réponse toute faite à + cette question, tout dépend de la nature des + évolutions. Par exemple, si vous venez juste + d'exécuter CVSup, et que + les fichiers suivants on été mis à + jour: + + src/games/cribbage/instr.c +src/games/sail/pl_main.c +src/release/sysinstall/config.c +src/release/sysinstall/media.c +src/share/mk/bsd.port.mk + + cela ne vaut probablement pas la peine de recompiler + tout le système. Vous pouvez tout simplement aller dans + les sous-répertoires appropriés, + exécuter make all install, et + c'est à peu près tout. Mais s'il y a des + évolutions importantes, par exemple sur + src/lib/libc/stdlib alors vous + devrez soit refaire le monde, ou recompiler au moins + toutes les parties du système qui sont liées + statiquement (de même que tout ce vous pourriez + avoir ajouté qui y serait lié statiquement). + + C'est à vous de voir. Vous préférerez + peut-être recompiler votre système tous les + quinze jours, et laisser les modifications s'empiler + pendant quinze jours. Ou bien vous préférerez + ne recompiler que ce qui a changé et vous faire + confiance pour tout ce qui en dépend. + + Et, bien sûr, cela dépend de la + fréquence avec laquelle vous voulez faire vos mises + à jour, et de si vous suivez la branche &os.stable; + ou &os.current;. + + + + + + Ma compilation échoue avec de nombreuses erreurs + “signal 11” (ou tout autre numéro de + signal). Que s'est-il passé? + + signal 11 + + + + Cela indique généralement un problème + matériel. (Re)compiler le système est un bon + moyen de mettre votre matériel sous pression, et + mettra souvent en évidence des défaillances + de la mémoire vive. Elles se manifestent normalement + d'elles-mêmes, la compilation échouant + lors de la réception de mystérieux signaux. + + Un bon indicateur de cet état de fait, est que + vous pouvez relancer la compilation et qu'elle échouera + en un endroit différent. + + Dans ce cas, vous ne pouvez guère faire autre chose + que d'intervertir les différents composants de votre + matériel pour déterminer lequel est en cause. + + + + + + Puis-je effacer /usr/obj après + avoir fini? + + + + Une réponse courte est oui. + + /usr/obj contient tous les + fichiers objets générés à la + compilation. Normalement, une des premières + étapes de “make world” est de supprimer ce + répertoire et de repartir à zéro. + Dans ce cas, conserver le répertoire + /usr/obj après avoir terminé ne + sert pas à grand chose, alors que vous + économiseriez pas mal d'espace disque (actuellement + environ 340 MO). + + Cependant, si vous savez ce que vous faites, vous + pouvez faire en sorte que “make world” + saute cette étape. Cela rendra les compilations + ultérieures plus rapides, puisque la plupart des sources + n'auront pas besoin d'être recompilées. + Le revers de la médaille est que des problèmes + subtils de dépendance peuvent se manifester, provoquant + l'échec de votre compilation de manière + étrange. Cela génère fréquemment + du bruit sur les listes de diffusion de &os;, quand quelqu'un se + plaint que sa mise ç jour a échoué, sans + réaliser que c'est parce qu'il a tenté de + brûler les étapes. + + + + + + Une recompilation interrompue peut-elle être + reprise? + + + + Tout dépend de jusqu'où vous êtes + aller avant de rencontrer un problème. + + En général (et ceci n'est + pas une règle absolue) “make world” + crée de nouveaux exemplaires des outils indispensables + (comme &man.gcc.1; et &man.make.1;) et des bibliothèques + système. C'est outils et bibliothèques sont + ensuite installés. Puis ils sont utilisés pour + se reconstruire eux-mêmes, et installés de nouveau. + L'intégralité du système (y compris + maintenant les programmes utilisateurs classiques, comme + &man.ls.1; ou &man.grep.1;) est alors recompilé avec + les nouveaux fichiers système. + + Si vous êtes à cette dernière + étape, et que vous le savez (parce que vous avez + consulté les résultats que vous avez + enregistrés) alors vous pouvez (sans trop de risque) + faire: + + … fix the problem … +&prompt.root; cd /usr/src +&prompt.root; make -DNOCLEAN all + + Cela ne détruira pas les résultats du + travail qu'à déjà effectué “make + world”. + + Si vous voyez le message: + + -------------------------------------------------------------- +Building everything.. +-------------------------------------------------------------- + + dans les comptes-rendus de “make world” + alors cette façon de procéder est probablement + bonne. + + Si vous ne voyez pas ce message, ou que vous doutez + de vous, alors prudence est mère de sûreté, + et il vaut mieux tout reprendre depuis le début. + + + + + + Comment puis-je accélérer la compilation + du système? + + + + + + Passez en mode mono-utilisateur. + + + + Mettez les répertoires + /usr/src et + /usr/obj sur des systèmes de + fichiers et des disques différents. Si possible, + installez ces disques sur des contrôleurs + différents. + + + + Encore mieux, mettez ces systèmes de fichiers + sur plusieurs disques utilisant le système + &man.ccd.4; (pilote de disques + concaténés). + + + + Ne compilez pas les bibliothèques profilées + (mettez “NOPROFILE=true” dans le fichier + /etc/make.conf). Vous n'en + avez certainement pas besoin. + + + + Egalement dans /etc/make.conf, + positionnez CFLAGS à quelque + chose comme . + L'optimisation est bien plus + lente, et la différence d'optimisation entre + et est en + général négligeable. + demande au compilateur d'utiliser + des tuyaux à la place de fichiers temporaires, ce + qui économise des accès disque (mais + utilise plus de mémoire). + + + + Passez l'option + + à &man.make.1; pour permettre l'exécution de + plusieurs processus en parallèle. Cela + améliore généralement les chose, que + vous ayez une machine mono- ou multi-processeurs. + + + + Le système de fichiers qui contient + /usr/src peut être monté + (ou remonté) avec l'option . + Cela empêche l'enregistrement des dates d'accès + aux fichiers par le système de fichiers. Vous + n'avez de toute façon probablement pas besoin de cette + information. + + &prompt.root; mount -u -o noatime /usr/src + + + Cet exemple suppose que + /usr/src constitue à lui + seul un système de fichiers. Si ce n'est pas + le cas (s'il fait partie de + /usr par exemple) vous + devez alors indiquer le point de montage de ce + système de fichiers, et non + /usr/src. + + + + + Le système de fichiers où se trouve + /usr/obj peut être + monté (ou remonté) avec l'option + . Les écritures sur le + disque se feront alors de façon asynchrone. En + d'autres termes, le programme reprend immédiatement + la main, et l'écriture des données sur le + disque se fait quelques secondes plus tard. Cela + permet le groupement des écritures sur le disque, + et le gain en performance peut être + spectaculaire. + + + Gardez à l'esprit que cette option rend votre + système de fichiers plus fragile. Avec cette + option, les risques sont accrus qu'en cas de + coupure d'alimentation, le système de fichiers + soit irrécupérable quand la machine + redémarrera. + + S'il n'y a que /usr/obj + sur ce système de fichiers, ce n'est alors pas un + problème. Si vous avez d'autres données + importantes sur ce système de fichiers, + assurez-vous que vos sauvegardes soient à jour + avant d'activer cette option. + + + &prompt.root; mount -u -o async /usr/obj + + + Comme auparavant, si + /usr/obj ne constitue pas un + système de fichiers en soit, remplacez-le dans + l'exemple par le nom du point de montage + approprié. + + + + + + + + + Que faire si quelque chose se passe mal? + + + + Soyez absolument sûr que votre environnement + ne contient pas des restes de compilation + précédentes. Cela est plutôt simple: + + &prompt.root; chflags -R noschg /usr/obj/usr +&prompt.root; rm -rf /usr/obj/usr +&prompt.root; cd /usr/src +&prompt.root; make cleandir +&prompt.root; make cleandir + + En effet, make cleandir + doit vraiment être exécutée + deux fois. + + Ensuite relancez l'ensemble du processus, + en commençant avec + make buildworld. + + Si vous avez toujours des problèmes, + envoyez l'erreur et le résultat de la commande + uname -a à la &a.questions;. + Tenez-vous prêt à répondre à d'autres + concernant votre configuration! + + + + - Tracking for multiple machines - + + + + Mike + Meyer + Contribution de + + + + Suivre les mises à jour pour plusieurs machines + + NFS + installation de multiples machines + + + Si vous avez plusieurs machines dont vous voulez maintenir à + jour l'arborescence des sources, alors faire + télécharger et recompiler à chacune d'entre elles + les sources semble un gaspillage de ressources: espace disque, bande + passante réseau, et cycles CPU. C'est en effet bien le cas, + et la solution est d'avoir une machine qui fait la majeure + partie du travail, pendant que le reste des machines montent ce + travaille par NFS. Cette section décrit une façon + de le faire. + + + Préliminaires + + Premièrement, identifiez un ensemble de machines + qui va utiliser le même ensemble de binaires, que nous + appellerons un ensemble de compilation. + Chaque machine peut avoir un noyau personnalisé, mais + elles exécuterons les mêmes binaires utilisateur du + système de base. Dans cet ensemble de machine, choisissez + une machine qui sera la machine de + compilation. Cela sera la machine sur laquelle + le monde et le noyau seront compilés. Idéalement, cela + devrait être une machine rapide avec un CPU suffisamment + disponible pour exécuter la commande make + world. Vous voudrez également utiliser + une machine de test, qui testera + les mises à jour logicielles avant d'être utilisées + en production. Cela doit être une + machine que vous pouvez vous permettre d'avoir hors service + pour une longue période. Cela peut être la machine + de compilation, mais cela n'est pas obligatoire. + + Toutes les machines de cet ensemble de compilation + doivent monter /usr/obj et + /usr/src à partir de la même + machine, et du même point de montage. Idéalement, ces + derniers sont sur deux disques différents sur la machine de + compilation, mais peuvent également être + montés par NFS sur cette machine. Si vous avez plusieurs + ensemble de compilation, /usr/src + devrait être sur une machine de compilation, et monté + par NFS sur les autres. + + Finalement assurez-vous que + /etc/make.conf sur toutes les machines + de l'ensemble de compilation est en accord avec la machine de + compilation. Cela signifie que la machine de compilation doit + compiler toutes les parties du système de base que toute + machine de l'ensemble de compilation va installer. + De plus, chaque machine de compilation devra avoir son nom de + noyau défini avec KERNCONF dans + /etc/make.conf, et la machine de + compilation devrait tous les lister dans + KERNCONF, en listant son noyau en premier. + La machine de compilation doit avoir les fichiers de + configuration des noyaux de chaque machine dans + /usr/src/sys/arch/conf + si elle va compiler leur noyau. + + + + Le système de base + + Maintenant que tout est configuré, vous êtes + fin prêt pour tout compiler. Compilez le noyau et le monde + sur la machine de compilation comme décrit dans la , mais n'installez rien. La + compilation une fois termninée, allez sur la machine de + test, et installez le noyau que vous venez juste de compiler. + Si la machine monte /usr/src + et /usr/obj via NFS, quand vous + redémarrez en mode mono-utilisateur vous devrez activer le + réseau et monter ces répertoires. La méthode + la plus simple est de démarrer en mode multi-utilisateur, + puis exécutez shutdown now pour passer en + mode mono-utilisateur. Une fois à ce niveau, vous pouvez + installer le nouveau noyau et monde puis exécuter + mergemaster comme vous le feriez + habituellement. Une fois cela effectué, redémmarez + pour retourner en mode multi-utilisateur pour cette + machine. + + Après que vous soyez certain que tout fonctionne + correctement sur la machine de test, utilisez la même + procédure pour installer le nouvel ensemble logiciel sur + chacune des autres machines de l'ensemble de + compilation. + + + + Les logiciels portés + + La même idée peut être utilisée + pour le catalogue des logiciels portés. La + première étape critique est de monter + /usr/ports depuis la même machine vers + toutes les machines de l'ensemble de compilation. Vous + pouvez alors configurer correctement + /etc/make.conf pour partager les + archives. Vous devrez faire pointer DISTDIR + sur un répertoire de partage commun dans lequel peut + écrire n'importe quel utilisateur utilisé pour + correspondance de l'utilisateur root par vos + montages NFS. Chaque machine devrait faire pointer + WRKDIRPREFIX sur une répertoire de + compilation local. Et enfin, si vous projetez de compiler et + distribuer des logiciels précompilés, vous + devriez fixer PACKAGES sur un répertoire + similaire à DISTDIR. +
- +