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 un sistema. Así pues, ¿Por qué hay una guía para algo que puede crear tantos quebraderos de cabeza?

Hay ciertas situaciones en las que el cambio de la variable  es inevitable, por ejemplo, cuando se actualiza a glibc 2.4 y el usuario comprueba que el   actual es i386, lo que hace imposible el uso de nptl. En este caso no hay muchas opciones y cambiar  es una de ellas.

Incluso después de seguir estas instrucciones pueden surgir problemas así que, por favor, asegúrese de leer y ejecutarlas con mucho cuidado. En este ejemplo se cambiará la variable  desde i386 a i686. Por favor, modifique las órdenes apropiadamente dependiendo de la situación del usuario.

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

Comprobar que la cosa funciona
Ahora es el momento de asegurarse de que los ajustes gcc-config y binutils-config son correctos y que no nada que sobre en.

La salida de gcc-config y binutils-config debería tener el siguiente aspecto:

A continuación compruebe si hay referencias a la variable  anterior en :

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

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

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

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

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

Ahora lance las siguientes órdenes para actualizar el entorno:

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

Si todavía aparece algún fichero, inténte echarle un vistazo antes de continuar.

Terminar con el cambio
Ahora es necesario hacer de nuevo emerge de libtool y lanzar fix_libtool_files.sh que se puede encontrar en. Asegúrese de utilizar la versión adecuada de gcc (La actual aquí es la 4.1.1) y pase la arquitectura anterior (aquí es la i386) como argumento. Reemplace  por el nuevo valor , y   por la versión de gcc. En este ejemplo se asume un valor para  aplicable a i686.

Ahora será posible reconstruir todos los paquetes:

En teoría, no debería ser necesario hacerlo, pero no se puede garantizar al 100% que este es realmente el caso.

Se necesita reconstruir el siguiente conjunto de paquetes

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</tt> and courier</tt>:

Esto ocurre porque durante la actualización, la variable  no coincide exactamente con el valor de la variable , causando que el compilador asuma que el sistema está utilizando compilación cruzada. Como consecuencia de todo esto,  no se inserta en  y se produce este error.

Please see the GCC upgrade guide for what needs to be rebuilt after a GCC upgrade.

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, utilice la |página de discusión o publique un hilo de discusión en este hilo del foro. La mayor parte de esta guía la ha escrito vapier, ¡Gracias por tu ayuda!