Changing the CHOST variable/fr

Ce document explique comment changer la variable CHOST  d'un système existant.

Introduction
Changer la variable CHOST est un problème délicat qui peut sérieusement mettre en péril votre système. Alors, pourquoi faire un guide sur ce sujet ?

Il existe des situations où changer CHOST est inévitable, par exemple quand vous voulez mettre glibc à jour vers la version  2.4 qui ne supporte que nptl et que vous vous rendez compte que votre CHOST est i386, ce qui rend l'utilisation de nptl impossible. Dans un tel cas, vous n'avez guère d'options et changer CHOST en est une.

Même si vous suivez ces instructions, des problèmes peuvent surgir, c'est pourquoi vous devez les lire et les exécuter très prudemment. Dans cet exemple la variable CHOST sera changée de i386 en i686, si votre changement est différent, bien-sûr, adaptez les commandes en conséquence.

Updating make.conf
To start out with the CHOST variable change, edit the file and add/change the CHOST value to suit the requirements.

Please note that if you are planning to use another value of CHOST than the profile default, you may need to update the CHOST_${ABI} variable as well. You can query the current value of these variable via portageq tool:

If this value is equal to your CHOST, you're good. Otherwise, you should override it as well, e.g.:

Compiler les paquets
Rebuild the following packages in this order:

Vérifier que tout fonctionne
Maintenant, il est temps de vous assurer que les réglages de   et de   sont sains et que vous n'avez aucun résidu dans.

La sortie de   et de    devrait ressembler à ce qui suit (peut différer selon votre version de gcc et de chost, dans ce cas, il s'agit de gcc 4.1.1 et de i686) :

Ensuite, vérifiez s'il y a des références à l'ancienne variable CHOST dans  :

Avant d'effacer le fichier, vérifions que des fichiers avec la nouvelle variable CHOST existent :

Cela paraît bon car il doit toujours n'y avoir qu'un seul fichier pour  dans  (05gcc dans notre exemple). Supprimons donc celui avec les mauvaises références :

Cela est aussi vrai pour   - s'il existe un fichier supplémentaire, cherchez celui qui est obsolète et supprimez le. Ensuite vérifiez votre.

Celui-ci paraît bon, ces deux fichiers devraient réellement être présents. Il est temps de se déplacer dans le répertoire gcc.

et sont corrects, mais  est un autre résidu qui doit être supprimé.

Maintenant exécutez les commandes suivantes pour mettre votre environnement à jour.

Puis vérifiez que tout est correctement réglé :

Si vous trouvez encore quelque chose, vous avez probablement manqué quelques fichiers, essayez de les repérer avant d'aller plus loin.

Terminer le changement
Maintenant, il faut réinstaller  et run. Assurez-vous d'utiliser la version de gcc correcte (votre version courante est  4.1.1  et l'ancienne architecture, i386 dans ce cas). Remplacez $CHOST avec votre nouvelle CHOST, et  par votre version de gcc. Cet exemple suppose que la variable CHOST est i686.

Vous pouvez recompiler tous vos paquets :

In theory, it should not be necessary to do so, but it cannot be 100% guaranteed that this is actually the case. Alternatively, you can manually rebuild all the known problematic packages:
 * multilib packages using CHOST prefixing or header wrapping,
 * Perl, Python and other tools that store configured compiler path.

Note that you may need to remove paths that do not apply to your system from the above invocation.

Si vous rencontrez d'autres paquets qui nécessitent la recompilation, faites le savoir à l'auteur de ce document.

Problèmes courants
Lorsque vous mettez à jour gcc de la version 3.3 vers la version 4.1 en même temps que vous changez la variable CHOST (s.v.p. ne faites ça en aucun cas), quelques utilisateurs ont fait état de paquets cassés qui nécessitent une recompilation, comme par exemple groff et courier :

Message d'erreur

Ceci se produit car pendant la mise à jour, la variable CHOST ne correspond pas exactement à CTARGET et que le compilateur suppose qu'il s'agit d'une compilation croisée. En conséquence, LDPATH n'est pas inséré dans, ce qui conduit à cette erreur.

Reportez-vous à notre guide de mise à jour de gcc pour savoir ce qu'il faut recompiler après une mise à jour de gcc.

Dans quelques rares cas, ceci peut casser d'anciennes versions de python également. On peut régler ce problème en ajoutant  (changez selon votre CHOST et votre version de  gcc ) à

Retour d'expérience
Ce sera tout. Un retour d'expérience (à la fois si les choses se sont bien passées, ou si des problèmes ont été rencontrés) est bienvenu. Envoyez un courriel à ou postez sur ce fil de discussion sur les forums. La majeure partie de ce guide provient de vapier. Merci pour votre aide !