it-swarm-pt.tech

dpkg-shlibdeps: erro: nenhuma informação de dependência encontrada para

Estou compilando um pacote deb e quando executo o dpkg-buildpackage eu recebo:

dpkg-shlibdeps: error: no dependency information found for /usr/local/lib/libopencv_highgui.so.2.3 

    ...
    make: *** [binary-Arch] Error 2

Isso acontece porque eu instalei a dependência manualmente. Eu sei que o problema será corrigido se eu instalar a dependência (ou usar o checkinstall), e eu quero gerar o pacote de qualquer maneira, porque eu não estou interessado na verificação de dependência. Eu sei que posso dar ao dpkg-shlibdeps a opção --ignore-missing-info que previne uma falha se informações de dependência não puderem ser encontradas. Mas eu não sei como passar esta opção para o dpkg-shlibdeps já que estou usando o dpkg-buildpackage e o dpkg-buildpackage chama o dpkg-shlibdeps ... 

Eu já tentei:

Sudo dpkg-buildpackage -rfakeroot -d -B

E com:

export DEB_DH_MAKESHLIBS_ARG=--ignore-missing-info

como root.

Alguma ideia?

34
user1370912

usar:

override_dh_shlibdeps:
    dh_shlibdeps --dpkg-shlibdeps-params=--ignore-missing-info

se o seu arquivo de regras não tiver a chamada dh_shlibdeps. Isso geralmente é o caso se você

%:
    dh [email protected]

como apenas regra nele. 

46
buzz

Se você quiser apenas ignorar esse sinalizador, altere a linha debian/rules de:

dh_shlibdeps

para:

dh_shlibdeps --dpkg-shlibdeps-params=--ignore-missing-info
15
Wes Hardaker

Ainda uma outra maneira, sem modificar scripts de construção, apenas criando um arquivo.

Você pode especificar local shlib overrides criando debian/shlibs.local com o seguinte formato: library-name soname-version dependencies

Por exemplo, dada a saída ldd /path/to/binary seguinte (aparada)

libevent-2.0.so.5 => /usr/lib/libevent-2.0.so.5 (0x00007fc9e47aa000)
libgcrypt.so.20 => /usr/lib/libgcrypt.so.20 (0x00007fc9e4161000)
libpthread.so.0 => /usr/lib/libpthread.so.0 (0x00007fc9e3b1a000)

O conteúdo de debian/shlibs.local seria:

libevent-2.0 5 libevent-2.0
libgcrypt 20 libgcrypt
libpthread 0 libpthread

A lista de "dependências" (terceira coluna) não precisa ser 100% precisa - eu apenas uso o próprio nome da biblioteca novamente.

É claro que isso não é necessário em um sistema sane debian que tenha esse material definido em /var/lib/dpkg/info (que pode ser usado como inspiração para essas substituições). O meu não é um sistema sane debian.

8
dequis

Em vez de simplesmente ignorar o erro, talvez você também queira corrigir a origem do erro, que geralmente é um arquivo package.shlibs ou package.symbols ausente ou incorreto no pacote que contém a biblioteca compartilhada que aciona o erro.

[1] documenta como dpkg-shlibdeps usa o package.shlibs resp. package.symbols, arquivos, [2] documenta o formato dos arquivos package.shlibs e package.symbols.

5
smani

Você acabou de escrever errado sua exportação. Deve ser assim:

export DEB_DH_SHLIBDEPS_ARGS_ALL=--dpkg-shlibdeps-params=--ignore-missing-info
4
Rkshvch

o dpkg-buildpackage usa make para processar o debian/rules. Neste processo, o dpkg-buildpackage pode chamar o dpkg-shlibdeps.

assim, a maneira correta de modificar uma parte do processo de criação de pacotes é editar debian/rules. é difícil dar mais dicas, sem ver as regras/debian reais.

3
umläute

Você pode usar isto:

dh_makeshlibs -a -n

exatamente depois dh_install

0
Hamid Reza Hasani