Instalación de Glibc-2.3.2

Tiempo estimado de construcción:		11.8 SBU
Estimación del espacio necesario en disco:	800 MB

Contenido de Glibc

Glibc es la librería C que proporciona las llamadas al sistema y las funciones básicas, tales como open, malloc, printf, etc. La librería C es utilizada por todos los programas enlazados dinámicamente.

Programas instalados: catchsegv, gencat, getconf, getent, glibcbug, iconv, iconvconfig, ldconfig, ldd, lddlibc4, locale, localedef, mtrace, nscd, nscd_nischeck, pcprofiledump, pt_chown, rpcgen, rpcinfo, sln, sprof, tzselect, xtrace, zdump y zic

Librerías instaladas: ld.so, libBrokenLocale.[a,so], libSegFault.so, libanl.[a,so], libbsd-compat.a, libc.[a,so], libc_nonshared.a, libcrypt.[a,so], libdl.[a,so], libg.a, libieee.a, libm.[a,so], libmcheck.a, libmemusage.so, libnsl.a, libnss_compat.so, libnss_dns.so, libnss_files.so, libnss_hesiod.so, libnss_nis.so, libnss_nisplus.so, libpcprofile.so, libpthread.[a,so], libresolv.[a,so], librpcsvc.a, librt.[a,so], libthread_db.so y libutil.[a,so]

Dependencias de instalación de Glibc

Glibc depende de: Bash, Binutils, Coreutils, Diffutils, Gawk, GCC, Gettext, Grep, Make, Perl, Sed, Texinfo.

Instalación de Glibc

Antes de instalar Glibc, debes entrar al directorio glibc-2.3.2 con el comando cd y desempaquetar Glibc-linuxthreads dentro de este directorio, no en el directorio donde normalmente desempaquetas las fuentes.

Nota: En este capítulo vamos a ejecutar el banco de pruebas para Glibc. Sin embargo, hay que resaltar que ejecutar aquí el banco de pruebas de Glibc no se considera tan importante como ejecutarlo en el Capítulo 6.

Se sabe que este programa se comporta mal si cambias sus parámetros de optimización (incluyendo las opciones -march y -mcpu). Por tanto, si tienes definida cualquier variable de entorno que pueda sobreescribir las optimizaciones por defecto, como CFLAGS y CXXFLAGS, te recomendamos que las desactives antes de construir Glibc.

Básicamente, compilar Glibc de forma diferente a como el libro sugiere pone la estabilidad de tu sistema en grave riesgo.

Aunque es un mensaje inofensivo, la instalación de Glibc se quejará de la ausencia del fichero /tools/etc/ld.so.conf. Corrige este molesto aviso con:

mkdir /tools/etc
touch /tools/etc/ld.so.conf

Igualmente, Glibc tiene un sutil problema cuando se compila con GCC 3.3.1. Aplica el siguiente parche para corregirlo:

patch -Np1 -i ../glibc-2.3.2-sscanf-1.patch

La documentación de Glibc recomienda construirlo fuera del directorio de las fuentes, en un directorio de construcción dedicado:

mkdir ../glibc-build
cd ../glibc-build

A continuación, prepara Glibc para su compilación:

../glibc-2.3.2/configure --prefix=/tools \
    --disable-profile --enable-add-ons \
    --with-headers=/tools/include \
    --with-binutils=/tools/bin \
    --without-gd

El significado de las opciones de configure:

Durante esta fase puede que veas el siguiente mensaje de aviso:

configure: WARNING:
*** These auxiliary programs are missing or incompatible versions: msgfmt
*** some features will be disabled.
*** Check the INSTALL file for required versions.

configure: AVISO:
*** Estos programas auxiliares no se encontraron o son versiones incompatibles: msgfmt
*** algunas características serán desactivadas.
*** Compruebe en el fichero INSTALL la versión requerida.

La ausencia o incompatibilidad del programa msgfmt normalmente es inofensiva, pero se cree que en ocasiones puede causar problemas al ejecutar el banco de pruebas.

Compila el paquete:

make

Ejecuta el banco de pruebas:

make check

El banco de pruebas de Glibc depende en gran medida de ciertas funciones de tu sistema anfitrión, en particular del núcleo. Adicionalmente aquí, en este capítulo, algunas pruebas pueden verse afectadas adversamente por las herramientas existentes o el entorno del sistema anfitrión. Por supuesto, esto no será un problema cuando ejecutes el banco de pruebas de Glibc dentro del entorno chroot en el Capítulo 6. En general, se espera que el banco de pruebas de Glibc pase siempre con éxito. Sin embargo, como se menciona anteriormente, bajo ciertas circunstancias algunos fallos son inevitables. Aquí hay una lista con las cuestiones más comunes a tener en cuenta:

En resumen, no te preocupes demasiado si ves fallos en el banco de pruebas de Glibc en este capítulo. La Glibc del Capítulo 6 es la que acabaremos usando al final, por lo que es la que realmentente queremos ver pasar. Pero recuerda, incluso en el Capítulo 6 puede que todavía ocurran algunos fallos, por ejemplo la prueba math. Cuando aparezca un fallo, anótalo y continua ejecutando de nuevo make check. El banco de pruebas debería continuar a partir de donde se quedó. Puedes evitar esta secuencia de inicio-parada ejecutando make -k check. Pero si lo haces, asegurate de registrar la salida para que más tarde puedas revisar el fichero de registro y examinar el número total de errores.

Ahora instala el paquete:

make install

Diferentes paises y culturas tienen diferentes convenciones sobre cómo comunicarse. Estas convenciones van desde las más simples, como el formato para representar fechas y horas, a las más complejas, como el lenguaje hablado. La "internacionalización" de los programas GNU funciona mediante el uso de locales. Instalaremos ahora las locales de Glibc:

make localedata/install-locales

Una alternativa al comando anterior es instalar sólamente aquellas locales que necesites o desees. Esto puede hacerse usando el comando localedef. Puedes encontrar más información sobre esto en el fichero INSTALL de las fuentes de glibc-2.3.2. Sin embargo, hay un número de locales que son esenciales para que las comprobaciones de paquetes posteriores se realicen. En particular, la prueba de libstdc++ en GCC. Las siguientes instrucciones, en vez del objetivo anterior install-locales, instalarán el conjunto mínimo de locales necesario para que las pruebas se ejecuten correctamente:

mkdir -p /tools/lib/locale
localedef -i de_DE -f ISO-8859-1 de_DE
localedef -i de_DE@euro -f ISO-8859-15 de_DE@euro
localedef -i en_HK -f ISO-8859-1 en_HK
localedef -i en_PH -f ISO-8859-1 en_PH
localedef -i en_US -f ISO-8859-1 en_US
localedef -i es_MX -f ISO-8859-1 es_MX
localedef -i fr_FR -f ISO-8859-1 fr_FR
localedef -i fr_FR@euro -f ISO-8859-15 fr_FR@euro
localedef -i it_IT -f ISO-8859-1 it_IT
localedef -i ja_JP -f EUC-JP ja_JP