por que o ldconfig criaria um link simbólico para libselinux.so.1 a partir de libext2fs.so.2?

por que o ldconfig criaria um link simbólico para libselinux.so.1 a partir de libext2fs.so.2?

usando, straceencontrei um comportamento de ldconfig(glibc), não consigo entender

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 alguma necessidade de que a biblioteca de objetos compartilhados para ext2fs( libext2fs.so.2) seja um link simbólico para libselinux.so.1.

Como o ldconfig sabe o que fazer? Não me parece lógico que esse binário estático /usr/bin/ldconfigtenha tal comportamento codificado, certo. Porém seu arquivo de configuração /etc/ld.so.confnão me ajuda muito a esclarecer esse mistério.

O que torna tudo isso ainda mais confuso/suspeito com minhas ferramentas de distribuição (Arch Linux) é que não consigo encontrar nenhum pacote ao qual o arquivo pertença.

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

não mostra nenhum pacote, enquanto $ pkgfile /usr/lib/libext2fs.so

saídascore/e2fsprogs

Então minha pergunta é especificamente:

  1. qual é o papel deste libselinux.so.1 aqui
  2. como o ldconfig decide criar esse link simbólico (que aliás. quebra e2fsck)

Responder1

Sua biblioteca provavelmente foi renomeada por engano em algum momento de /usr/lib/libselinux.1para /usr/lib/libext2fs.so.2. Isto não impedeldconfigpara encontrar o nome esperado do conteúdo da biblioteca (em vez do nome do arquivo da biblioteca) e, assim, vincular o nome "correto". Isso pode ser verificado copiando qualquer biblioteca para algum diretório e perguntandoldconfigpara atualizar (apenas) este diretório.

Aqui o equivalente no 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 falar nissolibselinuxé uma biblioteca comum para software que lida com SELinux. Até mesmo os comandos ls, cp, mv, psgeralmente estão vinculados a ele (para sua respectiva -Zopção).

informação relacionada