Instalando Glibc-2.2.5

Estimación del tiempo de construcción:      46 minutos
Estimación del espacio de disco requerido:  350 MB

Instalación de Glibc

Antes de instalar glibc, debes entrar al directorio glibc-2.2.5 y desempaquetar glibc-linuxthreads dentro del directorio glibc-2.2.5, no en /usr/src como normalmente debe hacerse.

Se sabe que este programa se comporta mal si cambias sus parámetros de optimización (incluyendo las opciones -march y -mcpu). Es mejor dejar a Glibc tal como está, así que te recomendamos borrar CFLAGS, CXXFLAGS y otras variables/parámetros como éstos que podrían cambiar la optimización con la que viene por defecto. Igualmente, no le pases la opción --enable-kernel al guión ./configure. Se sabe que causa violaciones de segmento cuando otros paquetes como fileutils, make y tar son enlazados de nuevo con ella.

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

Instala Glibc ejecutando los siguientes comandos:

mknod -m 0666 /dev/null c 1 3 &&
touch /etc/ld.so.conf &&
cp malloc/Makefile malloc/Makefile.backup &&
sed 's%\$(PERL)%/usr/bin/perl%' malloc/Makefile.backup > malloc/Makefile &&
cp login/Makefile login/Makefile.backup &&
sed 's/root/0/' login/Makefile.backup > login/Makefile &&
mkdir ../glibc-build &&
cd ../glibc-build &&
../glibc-2.2.5/configure --prefix=/usr \
   --enable-add-ons --libexecdir=/usr/bin &&
echo "cross-compiling = no" > configparms &&
make &&
make install &&
make localedata/install-locales &&
exec /bin/bash --login

Una alternativa a make localedata/install-locales es instalar solamente aquellos 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.2.5.

Durante la fase de configuración verás los siguientes mensajes de aviso

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

configure: aviso:
*** Este programa auxiliar no se ha encontrado o es demasiado antiguo: msgfmt
*** algunas características serán desactivadas.
*** Compruebe en el fichero INSTALL la versión requerida.

Que no se encuentre msgfmt (incluido en el paquete gettext que será instalado más adelante en este capítulo) no causa ningún problema. Se usa msgfmt para generar los ficheros binarios traducidos que se usan para hacer que el sistema "hable" en un idioma diferente. Como estos ficheros de traducción ya han sido generados para ti, no es necesario msgfmt. Solamente necesitas msgfmt si cambias los ficheros fuente de traducción (los ficheros *.po del subdirectorio po) lo cual requerirá regenerar los ficheros binarios.

Explicación de los comandos

mknod -m 0666 /dev/null c 1 3: Glibc necesita un dispositivo nulo para compilar correctamente. Todos los demás dispositivos se crearán en la siguiente sección.

touch /etc/ld.so.conf Uno de los pasos finales en la instalación de Glibc es lanzar ldconfig para actualizar la caché del cargador dinámico. Si este fichero no existe, la instalación se abortará con el error de que no puede leerlo; así que, simplemente, creamos un fichero vacío (el fichero vacío hará que Glibc por defecto use /lib y /usr/lib que es suficiente).

sed 's%\$(PERL)%/usr/bin/perl%' malloc/Makefile.backup > malloc/Makefile: Este comando de sed busca a través de malloc/Makefile.backup y convierte todas las ocurrencias de $(PERL) en /usr/bin/perl. La salida es entonces escrita en el original malloc/Makefile.in que es usado durante la configuración. Esto se hace porque Glibc no puede autodetectar perl debido a que no ha sido instalado todavía.

sed 's/root/0' login/Makefile.backup > login/Makefile: Este comando de sed reemplaza todas las ocurrencias de root en login/Makefile.backup con 0. Esto es porque todavía no tenemos Glibc en el sistema, así que los nombres de usuario no pueden ser resueltos a su identificador. Por tanto, reemplazamos el nombre de usuario root con su identificador de usuario 0.

--enable-add-ons: Esto activa los añadidos que hemos instalado con Glibc: linuxthreads

--libexecdir=/usr/bin: Esto causará que el programa pt_chown sea instalado en el directorio /usr/bin.

echo "cross-compiling = no" > configparms: Hacemos esto porque solamente estamos compilando para nuestro sistema. La compilación cruzada se usa, por ejemplo, para construir un paquete para Apple Power PC en un sistema Intel. La razón por la que Glibc piensa que hacemos compilación cruzada es porque no puede compilar un programa de prueba para determinarlo, así que automáticamente pasa por defecto a compilación cruzada. La compilación del programa de prueba falla porque Glibc no se ha instalado aún.

exec /bin/bash: Este comando lanzará una nueva instancia de bash que reemplazará al intérprete de comandos actual. Esto se hace para quitar el mensaje "I have no name!" del indicador de entrada de comandos, que estaba causado por la imposibilidad de bash de resolver un identificador de usuario a su nombre de usuario (que, a su vez, se debía a que no se encontraba instalada Glibc).

Contenido de glibc-2.2.5

Descripciones

Descripciones

Dependencias

Para instalar Glibc-2.2.5 se necesita lo siguiente:


bash: sh
binutils: ar, as, ld, ranlib, readelf
diffutils: cmp
fileutils: chmod, cp, install, ln, mknod, mv, mkdir, rm, touch
gcc: cc, cc1, collect2, cpp, gcc
grep: egrep, grep
gzip: gzip
make: make
gawk: gawk
sed: sed
sh-utils: date, expr, hostname, pwd, uname
texinfo: install-info, makeinfo
textutils: cat, cut, sort, tr