Changing the CHOST variable/es

Este documento describe como cambiar la variable CHOST en un sistema ya existente.

Introducción
Cambiar el CHOST es una cuestión importante ya que puede desestabilizar seriamente el sistema. Así pues, ¿Por qué hay una guía para ello?

Hay ciertas situaciones en las que el cambio de CHOST es inevitable, por ejemplo, si se quiere actualizar a glibc 2.4 que únicamente admite nptl y se encuetra que su CHOST es i386, lo que hace imposible el uso de nptl. En este caso no hay muchas opciones y cambiar CHOST es una de ellas.

Incluso siguiendo estas instrucciones pueden surgir problemas así que, por favor, asegúrese de leer y ejecutarlas con mucho cuidado. En este ejemplo se cambiará CHOST desde i386 a i686. Si se quiere hacer otro cambio distinto, por favor, modifique las órdenes apropiadamente.

Construir los paquetes
Para comenzar con el cambio de CHOST, edite el archivo  y cambie el valor de CHOST para adaptarlo a sus necesidades. A continuación reconstruya los siguientes paquetes en este orden:

Comprobar que la cosa funciona
Ahora es el momento de asegurarse de que sus ajustes  y   son correctos y no tienen nada que sobre en.

La salida de  y de   debe tener este aspecto (puede variar dependiendo de la versión de gcc y chost, aquí gcc 4.1.1 y i686):

A continuación compruebe si hay referencias al antiguo CHOST en :

Antes de eliminar el archivo, compruebe que haya ficheros con CHOST actualizado:

Este tiene buena pinta, ya que siempre debe haber un solo archivo para  en  (05gcc en este ejemplo), por lo que se debe eliminar el que tiene las referencias incorrectas:

Lo mismo se aplica a, si hay uno extra, compruebe el que está desactualizado y elimínelo. A continuación compruebe su.

Este parece correcto, los dos ficheros deberían estar ahí. Es el momento de moverlos al directorio gcc.

y son correctos, sin embargo  un sobrante que se debe eliminar.

Ahora lance las siguientes órdenes para actualizar su entorno:

A continuación comprueba que todo está en su sitio:

Si todavía se encuentra algo, se debe de haber perdido algún archivo, intente localizarlo antes de continuar.

Terminar con el cambio
Ahora es necesario hacer emerge de nuevo de   y lanzar. Asegúrese de utilizar la versión correcta de gcc (La actual aquí es 4.1.1) y pasar como argumento su arquitectura anterior (aquí es i386). Reemplace $CHOST por el nuevo CHOST y  por su versión de gcc. Este ejemplo asume CHOST definido como i686.

Quizás quiera volver a reconstruir todos los paquetes:

Ahora, en teoría no debería ser necesario hacerlo, pero no se puede garantizar al 100% que este es realmente el caso. He oído que se necesita recompilar algún que otro paquete, por lo que ser recomienda volver a compilar el objetivo world haciendo:

The following set of packages really need to be rebuilt:

All packages using perl install to the  directory and hence need rebuilding. In case qfile is not available on the system yet, install first.

Now rebuild all packages that have files installed in any location:

When encountering other packages that need recompiling, please let us know through the |discussion page of this guide.

Problemas comunes
When upgrading from gcc 3.3 to 4.1 at the same time as changing the  variable (please don't do that anyway), a couple of users reported broken packages that need recompiling, such as groff and courier:

Esto ocurre porque durante la actualización, CHOST no coincide exactamente con CTARGET y el compilador asume una compilación cruzada. Como consecuencia de todo esto, LDPATH no se inserta en y se produce este error.

Por favor, consulte nuestra guía de Actualización de GCC para saber lo que se necesita reconstruir después de una actualización de GCC.

In some rare cases, this can break old versions of python, too. This may be fixed by adding (change accordingly to the old   and gcc version) to, running ldconfig and then emerge libstdc++-v3. However, as can be seen, this situation needs to be avoided - don't change  and gcc at the same time.

Comentarios
Eso sería todo, los comentarios (tanto si funcionó, falló o se encontraron otros problemas) son bienvenidos, por favor envíe un correo electrónico a o publique en este hilo del foro. La mayor parte de este documento lo ha escrito vapier, ¡Gracias por tu ayuda!