Por algum motivo, provavelmente relacionado ao modo como as bibliotecas foram criadas (e, mais especificamente, vinculadas), elas armazenaram o diretório de instalação em seu nome sonoro: assim, o nome do filho de libtatlas.so
é /usr/local/lib/libtatlas.so
. ldconfig
tenta vincular as bibliotecas ao seu soname, se ele não existe, no mesmo diretório: ele encontra /usr/local/lib/libtatlas.so
, verifica seu soname, determina que um link precisa ser feito de /usr/local/lib//usr/local/lib/libtatlas.so
(o diretório e o soname concatenado) para /usr/local/lib/libtatlas.so
e falha porque /usr/local/lib/usr/local/lib
não existe.
A maneira apropriada de corrigir isso é garantir que os nomes das bibliotecas sejam definidos corretamente. Normalmente, eu esperaria libtatlas.so.3
etc. sem nome de diretório (a versão dependeria do nível de ABI da biblioteca que está sendo construída). Você provavelmente precisará reconstruir as bibliotecas ou encontrar um pacote corretamente construído ...
Como alternativa, você pode editar o soname de uma biblioteca usando PatchELF :
patchelf --set-soname libtatlas.so /usr/local/lib/libtatlas.so
O ideal é que você vincule novamente os programas criados por você nesta biblioteca, pois eles também terão o soname incorporado (você também pode corrigir isso usando o PatchELF).
Em um sistema em evolução, você realmente deseja especificar uma versão no soname, mas em um contêiner provavelmente isso não importa - você deve estar reconstruindo o contêiner para upgrades de qualquer maneira.