Instalación de Glibc-2.3.2

Tiempo estimado de construcción:		12.3 SBU
Estimación del espacio necesario en disco:	784 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

El sistema de construcción de Glibc está muy bien autocontenido y se instalará perfectamente, incluso aunque nuestros ficheros de especificación del compilador y los guiones del enlazador todavía apunten a /tools. No podemos ajustar las especificaciones y el enlazador antes de instalar Glibc, porque entonces las comprobaciones del autoconf de Glibc darían resultados erróneos y esto arruinaría nuestro objetivo de conseguir una construcción limpia.

Nota: El banco de pruebas para Glibc en este capítulo se considera crítico. No te lo saltes bajo ninguna circunstáncia.

Antes de comenzar a construir Glibc, recuerda desempaquetar el archivo Glibc-linuxthreads dentro del directorio glibc-2.3.2 y desactivar las variables de entorno que puedan sobreescribir las opciones de optimización por defecto.

Aunque se trata de un mensaje inofensivo, la fase de instalación de Glibc se quejará de la ausencia de /etc/ld.so.conf. Evita este molesto aviso con:

touch /etc/ld.so.conf

Luego, aplica el mismo parche que utilizamos anteriormente:

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 contrucción dedicado:

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

Ahora prepara Glibc para su compilación:

../glibc-2.3.2/configure --prefix=/usr \
    --disable-profile --enable-add-ons \
    --libexecdir=/usr/bin --with-headers=/usr/include

El significado de las nuevas opciones de configure:

Compila el paquete:

make

Comprueba los resultados:

make check

Las notas sobre el banco de pruebas que hay en la sección Instalación de Glibc-2.3.2 del Capítulo 5 son aún más apropiadas aquí. Asegurate de consultarlas si tienes alguna duda.

E instala el paquete:

make install

Las locales que hacen que tu sistema responda en un idioma diferente no se instalaron con el comando anterior. Hazlo con este:

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. Se puede encontrar más información sobre esto en el fichero INSTALL del árbol 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 correctamente. En particular, la prueba de libstdc++ en GCC. Las siguientes instrucciones, en vez del comando anterior install-locales, instalarán el conjunto mínimo de locales necesario para que las comprobaciones se ejecuten correctamente:

mkdir -p /usr/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

Por último, construye las páginas de manual de linuxthreads:

make -C ../glibc-2.3.2/linuxthreads/man

E instálalas:

make -C ../glibc-2.3.2/linuxthreads/man install

Configuración de Glibc

Necesitamos crear el fichero /etc/nsswitch.conf, porque aunque glibc nos facilta los valores por defecto cuando este fichero no se encuentra o está corrupto, estos valores por defecto no funcionan bien con la conexión de red. Esto se tratará en un capítulo posterior. También tendremos que configurar nuestra zona horaria.

Crea un nuevo fichero /etc/nsswitch.conf ejecutando lo siguiente:

cat > /etc/nsswitch.conf << "EOF"
# Inicio de /etc/nsswitch.conf

passwd: files
group: files
shadow: files

publickey: files

hosts: files dns
networks: files

protocols: db files
services: db files
ethers: db files
rpc: db files

netgroup: db files

# Fin de /etc/nsswitch.conf
EOF

Para saber en qué zona horaria estás, ejecuta este guión:

tzselect

Después de contestar unas preguntas referentes a tu localización, el guión te mostrará el nombre de tu zona horaria, algo como EST5EDT o Canada/Eastern. Crea entonces el fichero /etc/localtime ejecutando:

cp --remove-destination /usr/share/zoneinfo/Canada/Eastern /etc/localtime 

El significado de la opción:

Por supuesto, reemplaza Canada/Eastern por el nombre de la zona horaria que te dió el guión tzselect.

Configuración del cargador dinámico

Por defecto, el cargador dinámico (/lib/ld-linux.so.2) busca en /lib y /usr/lib las librerías dinámicas que necesitan los programas cuando los ejecutas. No obstante, si hay librerías en otros directorios que no sean /lib y /usr/lib, necesitas añadirlos al fichero de configuración /etc/ld.so.conf para que el cargador dinámico pueda encontrarlas. Dos directorios típicos que contienen librerías adicionales son /usr/local/lib y /opt/lib, así que añadimos estos directorios a la ruta de búsqueda del cargador dinámico.

Crea un nuevo fichero /etc/ld.so.conf ejecutando lo siguiente:

cat > /etc/ld.so.conf << "EOF"
# Inicio de /etc/ld.so.conf

/usr/local/lib
/opt/lib

# Fin de /etc/ld.so.conf
EOF