¿Por qué ldconfig crearía un enlace simbólico a libselinux.so.1 desde libext2fs.so.2?

¿Por qué ldconfig crearía un enlace simbólico a libselinux.so.1 desde libext2fs.so.2?

usando stracehe encontrado un comportamiento de ldconfig(glibc), no puedo entenderlo

lstat("/usr/lib/libext2fs.so.2", {st_mode=S_IFLNK|0777, st_size=16, ...}) = 0
unlink("/usr/lib/libext2fs.so.2")       = 0
symlink("libselinux.so.1", "/usr/lib/libext2fs.so.2") = 0

¿Existe alguna necesidad de tener la biblioteca de objetos compartida para que ext2fs( libext2fs.so.2) sea un enlace simbólico libselinux.so.1?

¿Cómo sabe ldconfig qué hacer? No me parece lógico que este binario estático /usr/bin/ldconfigtenga ese comportamiento codificado, ¿verdad? Sin embargo su archivo de configuración /etc/ld.so.confno me ayuda mucho a despejar ese misterio.

Lo que hace que todo esto sea aún más confuso/sospechoso con las herramientas de mi distribución (Arch Linux) es que no puedo encontrar ningún paquete al que pertenezca el archivo.

$ pkgfile /usr/lib/libselinux.so.1

no muestra ningún paquete, mientras que $ pkgfile /usr/lib/libext2fs.so

salidascore/e2fsprogs

Entonces mi pregunta es específicamente:

  1. cuál es el papel de este libselinux.so.1 aquí
  2. cómo ldconfig decide crear ese enlace simbólico (que por cierto se rompe e2fsck)

Respuesta1

Probablemente en algún momento se cambió el nombre de su biblioteca por error de /usr/lib/libselinux.1a /usr/lib/libext2fs.so.2. Esto no impideldconfigpara encontrar el nombre esperado del contenido de la biblioteca (en lugar del nombre del archivo de la biblioteca) y así vincular el nombre "correcto". Esto se puede verificar copiando cualquier biblioteca a algún directorio y preguntandoldconfigpara actualizar (únicamente) este directorio.

Aquí el equivalente en Debian 9:

$ mkdir /tmp/foo
$ cp -aL /lib/x86_64-linux-gnu/libselinux.so.1 /tmp/foo/libmytest.so.2
$ ls -l /tmp/foo/*
-rw-r--r-- 1 test test 155400 Sep 24  2017 /tmp/foo/libmytest.so.2
$ /sbin/ldconfig -v -n /tmp/foo
/tmp/foo:
    libselinux.so.1 -> libmytest.so.2 (changed)
$ ls -l /tmp/foo/*
-rw-r--r-- 1 test test 155400 Sep 24  2017 /tmp/foo/libmytest.so.2
lrwxrwxrwx 1 test test     14 Jun  5 23:33 /tmp/foo/libselinux.so.1 -> libmytest.so.2

Por ciertolibselinuxes una biblioteca común para software que trata con SELinux. Incluso los comandos ls, cp, mv, pssuelen estar vinculados con él (para su respectiva -Zopción).

información relacionada