Quebrando os identificadores do rpm para arquivos de biblioteca compartilhada

3

Se eu executo algo como:

rpm -q --fileprovide foo-1.0.0-0.x86_64

Eu recebo uma lista de arquivos, e alguns deles têm um identificador à direita para eles, como:

/usr/lib64/bar.so.4        bar.so.4()(64bit)

Pelo que eu posso dizer, parece haver 3 componentes para esses identificadores compreendendo SONAME, (), (CPU-ARCH). No entanto, não consigo encontrar em qualquer lugar on-line o que esses componentes são formalmente chamados nem o que você chama de identificador do lado direito. Por que há um vazio (), quais valores poderiam estar lá dentro? Tudo parece estar seguindo algum tipo de convenção, só não sei o que é ...

    
por bhh1988 17.03.2017 / 03:06

1 resposta

4

O RPM rastreia bibliotecas usando o soname, assim como o linker / carregador ELF.

Quando os símbolos com versão foram adicionados ao glibc, o RPM anexou versões exclusivas dentro do primeiro conjunto de parênteses. Veja "rpm -q --fileprovide glibc" para muitos exemplos.

Quando o multilib (bibliotecas de 32 e 64 bits no mesmo sistema) foi adicionado, um marcador "(64 bits)" foi anexado para distinguir.

Infelizmente, uma falta de comunicação levou à inclusão de um "()" vazio em bibliotecas que não possuem símbolos com versão. Em princípio, as versões de símbolos apareceriam dentro do "()" vazio, mas muito poucas bibliotecas além da glibc usam o controle de versão de símbolos.

    
por 17.03.2017 / 16:23