Respuestas:
libc.so
se movió como parte del trabajo multiarch en Ubuntu 11.04. La razón por la que no puede haber un enlace simbólico es que el propósito de multiarch es permitir la instalación de las versiones i386
y al mismo tiempo para que pueda ejecutar binarios de 32 bits más fácilmente en sistemas de 64 bits y viceversa (y otras situaciones similares). Si el paquete contuviera un enlace simbólico a la nueva ubicación, entonces las versiones de ese paquete para diferentes arquitecturas no serían instalables al mismo tiempo (¿qué versión del enlace simbólico elegiría?), Lo que anularía todo el punto del ejercicio.amd64
libc
libc6
dpkg
Cualquier cosa que codifique la ruta libc.so
debe actualizarse para que funcione correctamente desde Ubuntu 11.04 en adelante. Si el script del que habla es parte de Ubuntu, informe un error y agregue la multiarch
etiqueta.
/lib/libc.so.6
es la biblioteca de 32 o 64 bits.
El núcleo carga las bibliotecas dinámicas, las rutas no están codificadas en un programa. Un programa solo dice "Necesito libc.so.6". Luego, el sistema busca en las rutas de la biblioteca como se define en /etc/ld.so.conf
, incluyendo /usr/lib
y /lib
por defecto. Este archivo incluye archivos de configuración adicionales en /etc/ld.so.conf.d
.
En mi sistema de 64 bits, libc.so.6
se puede encontrar en /lib/x86_64-linux-gnu/libc.so.6
debido a la ruta definida en /etc/ld.so.conf.d/x86_64-linux-gnu.conf
:
# Multiarch support
/lib/x86_64-linux-gnu
/usr/lib/x86_64-linux-gnu
Para averiguar qué biblioteca carga un programa, use ldd
como en ldd /bin/bash
:
linux-vdso.so.1 => (0x00007ffff1dff000)
libncurses.so.5 => /lib/libncurses.so.5 (0x00007f9d8b3b8000)
libdl.so.2 => /lib/x86_64-linux-gnu/libdl.so.2 (0x00007f9d8b1b4000)
libc.so.6 => /lib/x86_64-linux-gnu/libc.so.6 (0x00007f9d8ae1f000)
/lib64/ld-linux-x86-64.so.2 (0x00007f9d8b61c000)
Poner el enlace simbólico no rompería nada.
Para obtener una lista de los directorios que se buscan, ejecute:
ldconfig -v -N | grep '^/'
-v
hace que se muestre una lista de archivos + directorios, -N
evita que se vuelva /etc/ld.so.cache
a crear el caché ( ).
/usr/local/lib
, pero funcionan bien si hago un enlace simbólico desde /usr/lib
. ¿Qué causa este comportamiento?
ldconfig -v -N | grep '^/'
?
Simplemente agregue el enlace simbólico al archivo libc.so.6 de la siguiente manera:
sudo ln -s /lib/i386-linux-gnu/libc.so.6 /lib/libc.so.6
Lo mismo ocurre con otros archivos que faltan todavía en el sistema, en mi caso Matlab no tenía el archivo, el problema se ha ido ahora.