Criando PKGBUILD de deb para um binário

1

Eu converti um pacote .deb para o PKGBUILD para um programa que vem sem fontes. O problema é que este binário procura por algumas bibliotecas compartilhadas disponíveis no Ubuntu 16.10 que possuem caminhos diferentes no Arch. Esta é uma parte da saída quando eu executo ldd no binário:

    libcurl-nss.so.4 => not found
    liblber-2.4.so.2 => /usr/lib/liblber-2.4.so.2 (0x00007f460d645000)
    libboost_thread.so.1.61.0 => not found
    libboost_system.so.1.61.0 => not found
    libboost_filesystem.so.1.61.0 => not found
    libboost_program_options.so.1.61.0 => not found
    libxalan-c.so.111 => not found

Qual é a melhor maneira de dizer a este programa onde encontrar bibliotecas no Arch?

    
por user3139563 24.08.2017 / 20:11

1 resposta

1

Eles estão no mesmo diretório. Mas alguns deles não existem no Arch - ou pelo menos não o nome exato que seu programa precisa.

O impulso é um problema. No Arch ele já está na versão 1.64 e, infelizmente, ele não tem nenhuma estabilidade ABI - em outras palavras, os programas que usam o Boost devem ser recompilados para cada versão. (Essa é a razão pela qual os números após o ".so" mudam.)

Então, primeiro você precisa criar um pacote para o Boost 1.61, de maneira semelhante a vários pacotes "old version" existentes (como o glew1.10, por exemplo). Ele teria apenas os arquivos .so, mas nenhum dos outros, para que pudesse ser instalado lado a lado com a versão mais recente.

(E não, você não pode simplesmente criar uma ligação simbólica ou renomear uma versão diferente - o .soname muda por um motivo.)

Embora o cURL não tenha problemas com o versionamento (ele está no .so.4 há muito tempo), ele tem três variantes - o Arch fornece apenas o OpenSSL e o GnuTLS. Então, novamente, você precisaria fazer um pacote que compila o cURL na biblioteca do NSS para obter o libcurl-nss. Você pode usar o pacote "curl-gnutls" como base.

A última biblioteca, xalan-c, simplesmente não está instalada no seu sistema.

    
por 24.08.2017 / 20:54

Tags