Gentoo es una distribución que se caracteriza por descargar y compilar el código fuente de acuerdo a los flags de compilación, llamadas USE, que el usuario ha decidido activar. Puesto que no existen binarios precompilados, o al menos están limitados a un puñado de paquetes grandes, un problema en el compilador GCC deja al sistema imposibilitado para instalar ningún software adicional. En este tutorial se abordará como solucionar problemas en el compilador GCC en gentoo.
Los errores que se puede encontrar, entre otros, son:
agd-server # emerge --info !!! No gcc found. You probably need to 'source /etc/profile' !!! to update the environment of this terminal and possibly !!! other terminals also. agd-server # gcc-config -l * gcc-config: Active gcc profile is invalid! [1] x86_64-pc-linux-gnu-4.4.4-r2 agd-server # gcc-config 1 * Switching native-compiler to x86_64-pc-linux-gnu-4.4.4-r2 ... * Your gcc has a bug with GCC_SPECS. * Please re-emerge gcc. * http://bugs.gentoo.org/68395 >>> Regenerating /etc/ld.so.cache... [ ok ] * If you intend to use the gcc from the new profile in an already * running shell, please remember to do: * # source /etc/profile agd-server # gcc gcc-config error: Could not run/locate "gcc"
La solución ante este problema es obvia, reinstalar el compilador GCC. Sin embargo si su compilador GCC está dañado, no podrá recompilarse a sí mismo. A continuación se le muestran dos posibles soluciones a este problema:
SOLUCIÓN 1
La forma más sencilla de solucionar el problema es descargar un binario precompilado para su arquitectura e indicarle a portage que lo instale. Un sitio, con garantía, para descargar binarios para gentoo es tinderbox.dev.gentoo.org. La última versión estable, cuando se escribió este post, es sys-devel/gcc-4.4.5 tanto en x86_64 como en x86.
Una vez obtenga el binario, guárdelo en /usr/portage/packages/sys-devel/gcc-4.4.5.tbz2 e indique a Portage que lo instale (opción -k y ruta hasta el binario precompilado). Por último tan solo deberá listar los compiladores existentes y seleccionar un compilador válido (probablemente el 2 o 1). Una vez haya solucionado su problema con el compilador, es recomendable que verifique la integridad del resto del sistema mediante el comando revdep-rebuild.
agd-server # /usr/portage/packages/sys-devel/ agd-server # wget http://tinderbox.dev.gentoo.org/default-linux/amd64/sys-devel/gcc-4.4.5.tbz2 agd-server # emerge -avk /usr/portage/packages/sys-devel/gcc-4.4.5.tbz2 agd-server # gcc-config -l * gcc-config: Active gcc profile is invalid! [1] x86_64-pc-linux-gnu-4.4.4-r2 [2] x86_64-pc-linux-gnu-4.4.5 agd-server # gcc-config 2 agd-server # revdep-rebuild
Una vez que haya comprobado que la integridad del sistema, puede recompilar GCC para su sistema meidante emerge -av sys-devel/gcc.
SOLUCIÓN 2
En este caso, deberá descargar y descomprimir portage y stage3 en un directorio, copiar su /etc/make.conf al nuevo directorio, hacer chroot en él y compilar un binario para su máquina. A continuación tan solo deberá instalar el binario generado en el entorno chroot en su máquina. Por último solo deberá verificar los compiladores disponible y seleccionar el nuevo compilador.
agd-server # mkdir /temp/recovery-gcc agd-server # cd /temp/recovery-gcc agd-server # wget http://....stage3-....tar.bz2 agd-server # wget http://....portage-....tar.bz2 agd-server # tar xvjpf stage3-...tar.bz2 -C /temp/recovery-gcc agd-server # tar xvjf porrtage-...tar.bz2 -C /temp/recovery-gcc/usr agd-server # cp /etc/make.conf /temp/recovery-gcc/etc/ agd-server # cp -L /etc/resolv.conf /temp/recovery-gcc/etc/ agd-server # mount -t proc none /temp/recovery-gcc/proc agd-server # mount -o bind /dev /temp/recovery-gcc/dev agd-server # chroot /temp/recovery-gcc/ /bin/bash agd-server # env-update >> Regenerating /etc/ld.so.cache... agd-server # source /etc/profile agd-server # export PS1="(chroot) $PS1" (chroot) agd-server # emerge --sync (chroot) agd-server # emerge -avB sys-devel/gcc agd-server # cd usr/portage/packages/sys-devel/ agd-server # cp /temp/recovery-gcc/usr/portage/packages/sys-devel/gcc-4.4.5.tbz2 ./ agd-server # emerge -avk /usr/portage/packages/sys-devel/gcc-4.4.5.tbz2 agd-server # gcc-config -l * gcc-config: Active gcc profile is invalid! [1] x86_64-pc-linux-gnu-4.4.4-r2 [2] x86_64-pc-linux-gnu-4.4.5 agd-server # gcc-config 2 agd-server # revdep-rebuild
0 comentarios:
Publicar un comentario