--- gcc-upgrading_FR.xml 2006-02-13 14:24:26.000000000 +0100 +++ gcc-upgrading_FR_up2date.xml 2006-02-13 15:06:33.795006576 +0100 @@ -20,15 +20,15 @@ -Ce document guidera les utilisateurs de Gentoo Linux à mettre GCC à jour. +Ce document guidera les utilisateurs de Gentoo Linux pour mettre GCC à jour. -4 -2006-01-30 +8 +2006-02-09 Introduction @@ -42,7 +42,7 @@ jour au moment où une nouvelle version supprime un bogue qui vous ennuie, une nouvelle fonctionalité dont vous avez besoin a été ajoutée, ou si vous voulez simplement garder votre système à jour. Si les cas précédents ne vous -correspondent pas, vous pouvez retarder votre mise a jour sans crainte tant que +correspondent pas, vous pouvez retarder votre mise a jour sans craintes tant que votre version de GCC est supportée par les développeurs de Gentoo.

@@ -55,33 +55,49 @@

-Ce guide documenta les étapes nécessaires à la mise à jour du compilateur -utilisé par votre machine Gentoo. Une section spécifique est dédiée à la mise à jour de GCC 3.3 à la version 3.4 -et les problèmes rencontrés avec libstdc++. +Ce guide va documenter les étapes nécessaires pour mettre à jour en douceur le +compilateur utilisé par votre machine Gentoo. Une section spécifique est dédiée +à la mise à jour de GCC depuis la version 3.3 à +la 3.4 ou supérieure, et aux problèmes avec libstdc++. Une autre +section spécifique vise les utilisateurs qui +installent Gentoo à partir d'une image du stage3, après qu'une nouvelle +version majeure ou mineure de GCC ait été rendue publique.

+ +Notez bien que la mise à jour de GCC 3.4 vers 4.0 ou plus ne nécessite pas de +gros changements à faire par l'utilisateur, puisque GCC 3.4 et 4.0 utilisent +la même ABI. Il suffit que gcc-config soit utilisé pour choisir le +compilateur désiré. + +
-Instructions générales à la mise à jour +Instructions générales pour la mise à jour
Introduction -Si vous recherchez les instructions spécifiques à la mise à jour de GCC 3.3 à -la version 3.4, veuillez consulter la section -dédiée. +Si vous recherchez des instructions spécifiques pour la mise à jour de GCC 3.3 +vers GCC 3.4 ou supérieur, veuillez consulter la section dédiée. + + + +Si vous recherchez des instructions spécifiques pour les mises à jour de GCC +lors d'une nouvelle installation, veuillez consulter la section dédiée.

En général, les mises à jour servant à corriger les bogues, comme de GCC -3.3.5 à 3.3.6, devraient être sans risque -- il suffit d'installer la nouvelle -version, de modifier votre système afin d'utiliser le nouveau GCC et -d'uniquement recompiler le paquet affecté, libtool. Quoiqu'il en soit, +3.3.5 à 3.3.6, devraient être sans risques -- il suffit d'installer la nouvelle +version, de modifier votre système afin d'utiliser le nouveau GCC et de +recompiler le seul paquet affecté, libtool. Cependant, quelques mises à jour de GCC cassent la compatibilité binaire ; dans ces cas, une recompilation des paquets affectés (ou même de la chaîne de compilation complète et du système) pourrait être requise. @@ -91,29 +107,29 @@ Souvenez-vous, nous avons dit que la mise à jour de GCC ne serait pas automatique. Il y a tout de même une exception : les mises à jour servant à supprimer des bogues, comme de la version 3.3.5 à la 3.3.6 si vous n'utilisez -pas le dispositif "multislot" autorisant les deux versions à coexister sur un -seul système. Multislot est désactivé, car il n'a pas grand intérêt pour les -utilisateurs. +pas le flag USE "multislot" autorisant les deux versions à coexister sur un +seul système. Multislot est désactivé par défaut, car il n'a pas grand intérêt +pour les utilisateurs.

-
+
 # emerge -uav gcc
 
-(Veuillez remplacer "i686-pc-linux-gnu-3.4.4" par la version de GCC
-et le paramètre CHOST que vous venez de mettre à jour)
+(Veuillez remplacer "i686-pc-linux-gnu-3.4.4" par votre paramètre
+CHOST et la version de GCC vers laquelle vous venez de mettre à jour)
 # gcc-config i686-pc-linux-gnu-3.4.4
 # source /etc/profile
 
-(Recompilez libtool)
+(Recompilation de libtool)
 # emerge --oneshot -av libtool
 

-On peut maintenant recompiler la chaîne de compilation et ensuite world, comme -ça, tout sera recompilé par le nouveau GCC. +On peut maintenant recompiler la chaîne de compilation, puis world, afin de +s'assurer que tous les paquets seront recompilés par le nouveau GCC.

-
+
 # emerge -eav system
 # emerge -eav world
 
@@ -125,7 +141,7 @@ désinstaller) :

-
+
 # emerge -aC =sys-devel/gcc-3.3*
 
@@ -134,15 +150,15 @@ -La mise à jour de la version 3.3 à la version 3.4 +Mise à jour de la version 3.3 à la version 3.4 ou supérieure
Introduction

-La mise à jour de GCC 3.3 à 3.4 n'est pas sans soucis, car l'ABI C++ a changé -entre les deux versions. Il faut donc aussi se charger d'un problème qui va -survenir avec la bibliothèque libstdc++. +La mise à jour de GCC 3.3 à 3.4 ou supérieure n'est pas sans soucis, car l'ABI +C++ a changé entre les deux versions. Il faut également s'occuper d'un +problème qui va survenir avec la bibliothèque libstdc++.

@@ -159,13 +175,13 @@

-Vous avez le choix entre deux possibilités pour mettre votre système à jour. -La première méthode est la +Vous avez le choix entre deux possibilités pour mettre votre système à jour. La +première méthode est la plus rapide et requiert l'utilisation de l'outil revdep-rebuild du -paquet gentoolkit alors que la -seconde recompile le système entier à partir de zéro. Le sytème utilisera -ainsi les nouveaux dispositifs de GCC. Le choix entre ces deux possibilités -vous appartient. +paquet gentoolkit alors que la +seconde recompile le système entier à partir de zéro. Le système utilisera +ainsi les nouvelles fonctionnalités de GCC. Le choix entre ces deux possibilités +vous appartient. Dans la plupart des cas, la première méthode est suffisante.

@@ -182,20 +198,20 @@ état.

-
+
 # emerge -an gentoolkit
 # emerge -uav gcc
 # gcc-config i686-pc-linux-gnu-3.4.4
 # source /etc/profile
 
-(Recompiler libtool)
+(Recompilation de libtool)
 # emerge --oneshot -av libtool
 
-Nous présumons que vous utilisez CHOST="i686-pc-linux-gnu". Si vous -utilisez un autre CHOST, veuillez le remplacer dans la commande gcc-config par -le CHOST approprié. +Nous supposons dans cet exemple que vous utilisez la variable +CHOST="i686-pc-linux-gnu". Si vous utilisez un autre CHOST, veuillez +adapter la ligne gcc-config en conséquence.

@@ -210,21 +226,21 @@

-Il est possible que vous rencontriez des problèmes avec des versions de paquets -non-existantes du fait qu'elles sont trop anciennes ou masquées. Dans ce cas, -vous aurez besoin d'utiliser l'option --package-names avec -revdep-rebuild. Cela permet de baser la recompilation du paquet sur son -nom plutôt que son nom et sa version. +Il est possible que vous rencontriez des problèmes avec des paquets dont la +version n'existe plus, car ils sont dépassés ou masqués au moment où vous +mettez à jour. Si c'est le cas, vous pouvez utiliser l'option +--package-names de revdep-rebuild. Elle permet de recompiler +les paquets en se basant sur leur nom, plutôt que leur désignation complète +composée du nom et de la version exacte.

-Afin de garder une compatibilité avec les anciennes applications binaires en -C++ et des paquets que revdep-rebuild pourrait avoir oublié, -sys-libs/libstdc++-v3 a besoin d'être installé avant de désinstaller GCC -3.3. +Pour permettre la compatibilité avec les anciens binaires d'applications C++, +sys-libs/libstdc++-v3 doit être installé sur votre système.

-
+
 # emerge --oneshot sys-libs/libstdc++-v3
 # emerge -aC =sys-devel/gcc-3.3*
 
@@ -243,7 +259,7 @@ du compilateur à la nouvelle.

-
+
 # emerge -uav gcc
 # gcc-config i686-pc-linux-gnu-3.4.4
 # source /etc/profile
@@ -253,17 +269,17 @@
 
-Nous présumons que vous utilisez CHOST="i686-pc-linux-gnu". Si vous -utilisez un autre CHOST, veuillez le remplacer dans la commande gcc-config par -le CHOST approprié. +Nous supposons dans cet exemple que vous utilisez la variable +CHOST="i686-pc-linux-gnu". Si vous utilisez un autre CHOST, veuillez +adapter la ligne gcc-config en conséquence.

-Pour garder une compatibilité avec les anciennes applications binaires C++, -sys-libs/libstdc++-v3 a besoin d'être installé sur votre système. +Pour permettre la compatibilité avec les anciens binaires d'applications +C++, sys-libs/libstdc++-v3 doit être installé sur votre système.

-
+
 # emerge --oneshot sys-libs/libstdc++-v3
 
@@ -272,12 +288,12 @@ Cela va prendre du temps en fonction du nombre de paquets que vous avez installés, car votre chaîne de compilation entière et ses fichiers système seront recompilés, suivis de chaque paquet de votre système, incluant la chaîne -de compilation. Cela est nécessaire pour s'assurer que chaque paquet y compris -ceux de la chaîne de compilation elle-même aura été compilés avec la nouvelle -chaîne de compilation. +de compilation. Cela est nécessaire pour s'assurer que chaque paquet, y compris +ceux de la chaîne de compilation elle-même, auront été compilés avec la +nouvelle chaîne de compilation.

-
+
 # emerge -e system
 # emerge -e world
 
@@ -294,6 +310,158 @@
+ +Mise à jour de GCC à l'installation du système +
+Introduction + + +

+La mise à jour de GCC sur un système après l'installation d'une image de stage3 +est assez simple. Un des avantage qu'ont les utilisateurs qui installent un +nouveau système est qu'ils n'ont pas beaucoup de logiciels installés qui ont +des liens avec les anciennes versions de GCC. L'exemple suivant sert pour la +mise à jour de GCC 3.3 à 3.4 ou supérieur. Certaines passages seront différents +si vous mettez à jour depuis d'autres version de GCC. Par exemple, les noms des +bibliothèques utilisées avec revdep-rebuild plus bas sont spécifiques à +GCC 3.3, ainsi que le besoin d'installer libstdc++-v3. +

+ +

+Si vous n'avez pas encore fait de modifications a votre système, il suffit de +quelques étapes pour le mettre à jour vers une nouvelle version de GCC. Comme +pour la mise à jour de GCC 3.3 vers 3.4, vous avez deux solutions. Cependant, +ce cas de figure est moins compliqué puisque il y a peu de différences entre +les deux solutions. La première +méthode est plus rapide et utilise l'outil revdep-rebuild du paquet +gentoolkit, comme la procédure précedente. L'utilisation de +revdep-rebuild n'entraîne la recompilation que pour les paquets qui ont un +lien avec les librairies de GCC, tandis que +la seconde méthode entraîne la recompilation de tout le système et +prend donc beaucoup plus de temps. Cette seconde méthode n'est jamais utile +et est seleument documentée à des fins d'exhaustivité. +

+ +

+Les premières étapes sont communes aux deux méthodes, et doivent être accomplies +dans tous les cas. +

+ +
+# emerge -uav gcc
+# gcc-config i686-pc-linux-gnu-3.4.4
+# source /etc/profile
+
+(Recompilation de libtool)
+# emerge --oneshot -av libtool
+
+ + +Nous supposons dans cet exemple que vous utilisez la variable +CHOST="i686-pc-linux-gnu". Si vous utilisez un autre CHOST, veuillez +adapter la ligne gcc-config en conséquence. + + +

+Pour permettre la compatibilité avec les anciens binaires d'applications C++, +sys-libs/libstdc++-v3 doit être installé sur votre système. +

+ +
+# emerge --oneshot sys-libs/libstdc++-v3
+
+ + +
+ +
+Utilisation de revdep-rebuild + + +

+Cette méthode nécessite que vous installiez d'abord gentoolkit si vous +ne l'avez pas déjà fait. Nous utiliserons revdep-rebuild pour rechercher +les paquets installés que nous devrons recompiler, et les recompiler. +

+ +
+# emerge -an gentoolkit
+# revdep-rebuild --library libstdc++.so.5 -- -p -v
+# revdep-rebuild --library libstdc++.so.5
+
+ + +Il est possible que vous rencontriez des problèmes avec des paquets dont la +version n'existe plus, car ils sont dépassés ou masqués au moment où vous +mettez à jour. Si c'est le cas, vous pouvez utiliser l'option +--package-names de revdep-rebuild. Elle permet de recompiler les +paquets en se basant sur leur nom, plutôt que leur désignation complète composée +du nom et de la version exacte. + + + +
+
+Utilisation de emerge -e + + +

+Cette méthode, bien que plus lente, va recompiler tout le système pour s'assurer +que tout a bien été compilé avec votre nouveau compilateur. Ce n'est pas +nécessaire, mais c'est une solution valide si vous avez modifié les CFLAGS ou +d'autres variables de make.conf qui ont un effet sur la compilation. +

+ +
+# emerge -uav gcc
+# gcc-config i686-pc-linux-gnu-3.4.4
+# source /etc/profile
+
+(Recompilation de libtool)
+# emerge --oneshot -av libtool
+
+ + +Nous supposons dans cet exemple que vous utilisez la variable +CHOST="i686-pc-linux-gnu". Si vous utilisez un autre CHOST, veuillez +adapter la ligne gcc-config en conséquence. + + +

+Pour permettre la compatibilité avec les anciens binaires d'applications C++, +sys-libs/libstdc++-v3 doit être installé sur votre système. +

+ +
+# emerge --oneshot sys-libs/libstdc++-v3
+
+ +

+Puisque nous accomplissons la mise à jour après une installation initiale, il +est inutile de recompiler la cible world comme on devrait le faire pour une +mise à jour d'un système déjà installé. Cependant, vous pouvez choisir de faire +une mise à jour de world au lieu de seulement system, pour être certain que +tous les paquets soient mis à jour. +

+ +
+# emerge -e system
+
+ +

+Il est également possible de désinstaller les anciennes versions de GCC sans +risques à ce stade. Veuillez remplacer VOTRE-NOUVELLE-VERSION-DE-GCC +avec la version vers laquelle vous avez mis à jour: +

+ +
+# emerge -aC "<sys-devel/gcc-VOTRE-NOUVELLE-VERSION-DE-GCC"
+
+ + +
+
+ Pièges connus
@@ -302,18 +470,23 @@

Il est important de désactiver distcc durant la mise à jour. Mélanger les versions de compilateurs sur vos nœuds provoquera des problèmes au -niveau de la compilation. Vous pouvez laisser ccache étant donné que les +niveau de la compilation. Vous pouvez garder ccache activé étant donné que les objets en cache seront invalidés automatiquement.

Utilisez toujours la même version de GCC pour votre noyau et les modules -additionels du noyau. Une fois votre "world" recompilé avec votre nouveau GCC, +additionnels du noyau. Une fois votre "world" recompilé avec votre nouveau GCC, les modules externes (comme app-emulation/qemu-softmmu) échoueront lors de leur chargement. Il suffit de recompiler votre noyau pour résoudre ce problème.

+

+Si vous mettez à jour une machine SPARC, n'oubliez pas de relancer silo -f + après avoir recompilé world afin d'éviter d'eventuels problèmes. +

+
@@ -332,15 +505,15 @@ /etc/env.d/gcc/i686-pc-linux-gnu-3.3.5: No such file or directory, essayez alors de supprimer /etc/env.d/gcc/config-i686-pc-linux-gnu et lancez de nouveau gcc-config, suivi de source /etc/profile. Ne -faites cela que si vous n'utilisez pas de compilateurs croisés. +faites pas cela si vous utilisez la compilation croisée.

-Si un paquet échoue durant emerge -e system/world, vous pouvez relancer -l'operation avec la commande emerge --resume. Si un paquet continue -d'échouer, passez au paquet suivant avec la commande emerge --resume ---skipfirst. Ne lancez aucun autre emerge entre temps, car cela effacerait -les informations qui permettent la relance. +Si un paquet échoue durant emerge -e system ou emerge -e world, +vous pouvez relancer l'opération avec la commande emerge --resume. Si un +paquet continue d'échouer, passez au paquet suivant avec la commande emerge +--resume --skipfirst. Ne lancez aucun autre emerge entre temps, car cela +effacerait les informations qui permettent la relance.

@@ -350,7 +523,7 @@ GCC_SPECS et relancez la mise à jour de GCC :

-
+
 # gcc-config 1
 # source /etc/profile
 # unset GCC_SPECS