Instalei o Bacula 7.4.4 em um sistema openSUSE Leap 42.3 do repositório https://build.opensuse.org/package/show/home%3AXimi1970%3AopenSUSE%3AExtra/bacula recomendado em https://software.opensuse.org /pacote/bacula . Esses pacotes usam o mecanismo alternativo do openSUSE para configurar o DMBS a ser usado no catálogo - no meu caso, MySQL. Infelizmente, o pacote é um pouco bugado. Após a instalação dos pacotes bacula-director e bacula-mysql, os links simbólicos para a biblioteca libbaccats em /usr/lib64 ficam assim:
libbaccats.so -> /etc/alternatives/libbaccats.so
libbaccats-mysql.so -> libbaccats-mysql-7.4.4.so
libbaccats-stub.so -> libbaccats-7.4.4.so
libbaccats-7.4.4.so -> libbaccats-stub-7.4.4.so
Os dois últimos são obviamente absurdos e fazem com que qualquer tentativa de executar o director ou o utilitário dbcheck falhem com a mensagem de erro:
Erro fatal: Por favor, substitua esta biblioteca libbaccats nula por uma adequada.
Obviamente, isso é facilmente corrigido emitindo os comandos:
ln -sf libbaccats-stub-7.4.4.so libbaccats-stub.so
ln -sf /etc/alternatives/libbaccats-7.4.4.so libbaccats-7.4.4.so
para produzir o resultado desejado:
libbaccats.so -> /etc/alternatives/libbaccats.so
libbaccats-7.4.4.so -> /etc/alternatives/libbaccats-7.4.4.so
libbaccats-mysql.so -> libbaccats-mysql-7.4.4.so
libbaccats-stub.so -> libbaccats-stub-7.4.4.so
que permite os links simbólicos em /etc/alternatives:
libbaccats.so -> /usr/lib64/libbaccats-mysql.so
libbaccats-7.4.4.so -> /usr/lib64/libbaccats-mysql-7.4.4.so
para direcionar corretamente as referências libbaccats para a variante do MySQL.
No entanto, cada vez que o ldconfig(8)
comando é executado, ele redefine o link simbólico /usr/lib64/libbaccats-7.4.4.so para apontar para libbaccats-stub-7.4.4.so novamente, quebrando o Bacula. Como ldconfig
é executado automaticamente pelo sistema em várias ocasiões, isso é bastante irritante.
O mesmo problema existe com o Bacula 9.0.6 do repositório https://download.opensuse.org/repositories/home:/cristyde/openSUSE_Leap_42.3/ .
Como posso corrigir ldconfig
a ideia de onde esse link simbólico deve apontar?
De acordo com minha pesquisa, o (des)comportamento de
ldconfig
é desencadeado pelo conteúdo do arquivolibbaccats-stub-9.0.6.so
, especificamente seuSONAME
campo:Aparentemente, esse cabeçalho diz
ldconfig
para criar um link simbólico com esse nome.Prova: Se eu renomear
libbaccats-stub-9.0.6.so
paralibbaccats-stub-9.0.6.so.BAD
entãoldconfig
cria devidamente um link simbólicoe se eu compactar
libbaccats-stub-9.0.6.so
emgzip
vez disso,ldconfig
reclamae deixa meu
libbaccats-7.4.4.so
link simbólico sozinho.Portanto, embora eu não tenha encontrado uma maneira de
ldconfig
criar o link simbólico correto, há pelo menos uma maneira de impedir que ele recrie o errado: excluir, compactar ou desmontar o arquivo/usr/lib64/libbaccats-stub-9.0.6.so
.Claro que a solução real seria definir o
SONAME
campolibbaccats-stub-9.0.6.so
corretamente, mas isso teria que acontecer no processo de compilação dobacula-director
pacote.