Como criar um link simbólico de todos os arquivos em um diretório usando um nome abreviado obtido com o uso de um corte canalizado no nome do arquivo

0

Eu tenho um diretório cheio de bibliotecas ( *.so.0.* ), e eu quero usar find para criar um link simbólico para cada arquivo, chamado *.so.0 .

Aqui está uma tentativa (sem funcionar):

find $HOME/.local/lib64/ -name "lib*.so.0.*" -execdir ln -s {} $(echo {} | cut -d . -f 1-4) \;

Mas não consigo descobrir por que isso não funciona.

Eu tentei com apenas uma biblioteca, usando ln -s ./libfoo.so.0.12.0. $(echo ./libfoo.so.0.12.0. | cut -d . -f 1-4) , o resultado sendo ./libfoo.so.0 .

    
por Dremor 10.05.2016 / 19:25

1 resposta

1

Você está tentando configurar um conjunto alternativo de bibliotecas ELF para executar um aplicativo; portanto, em vez de criar manualmente os links simbólicos, vá direto para o aplicativo desejado para o problema: ldconfig $HOME/.local/lib64/ deve atualizar todos os links simbólicos no diretório para você.

Eles nem sempre serão .so.0 , isso dependerá dos dados SOVERSION nas bibliotecas ELF.

    
por 28.03.2017 / 07:58