Criando PKGBUILD a partir de deb para um binário

Criando PKGBUILD a partir de deb para um binário

Converti um pacote .deb em PKGBUILD para um programa que vem sem fontes. O problema é que este binário procura algumas bibliotecas compartilhadas disponíveis no Ubuntu 16.10 que possuem caminhos diferentes no Arch. Isso faz parte da saída quando executo lddo 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 informar a este programa onde encontrar bibliotecas no Arch?

Responder1

Eles estão no mesmo diretório. Mas alguns delesnão existeno Arch – ou pelo menos não o .soname exato que seu programa precisa.

O impulso é um problema. No Arch já está na versão 1.64, e infelizmente não possui estabilidade de ABI – ou seja, programas que utilizam Boost devem ser recompilados para cada versão. (Essa é a razão pela qual os números após a mudança ".so".)

Então, primeiro você precisaria criar um pacote para o Boost 1.61, de maneira semelhante a vários pacotes de "versão antiga" existentes (como glew1.10, por exemplo). Ele teria apenas os arquivos .so, mas nenhuma das outras coisas, para que pudesse ser instalado lado a lado com a versão mais recente.

(E não, você não pode simplesmente criar um link simbólico ou renomear uma versão diferente – o .soname muda por um motivo.)

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

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

informação relacionada