O programa lintian
é executado após a criação de um pacote usando debuild
e deve avisá-lo sobre bibliotecas ausentes ao construir um pacote binário. O comando ldd
pode ser usado para verificar quais bibliotecas são necessárias para um pacote.
Eu uso o script abaixo para buscar rapidamente dependências de pacotes de bibliotecas:
#!/bin/sh
# Save it as executable ~/bin/pkglibs
# Usage: pkglibs directory
# pkglibs file
list_lib_pkgnames() {
local lib="$1" libs
# get the libraries for given "$lib", stripping out linker libraries
libs=$(ldd "$lib" | awk '/=/{print $1}' | grep -vE '^(linux-vdso|linux-gate)\.so\.1$')
# if there are libraries, find the matching packages for it
[ -n "$libs" ] && dpkg -S $libs | sed 's/: .*//'
}
search="$1"
if [ -d "$search" ]; then
# for directories, recursively search for library dependencies
find "$search" -type f -exec "$0" {} \; | sort -u
else
list_lib_pkgnames "$search"
fi
O comando pode demorar um pouco para diretórios grandes, já que testa cada arquivo separadamente. Ele pode ser otimizado para gerar uma lista de bibliotecas primeiro e depois passar as entradas exclusivas para o comando dpkg -S
, mas isso é um exercício para o leitor.
Exemplo: pkglibs /usr/lib/mesa/
:
ia32-libs
lib32gcc1
lib32stdc++6
libc6
libc6-i386
libdrm2
libgcc1
libstdc++6
libx11-6
libxau6
libxcb1
libxdamage1
libxdmcp6
libxext6
libxfixes3
libxxf86vm1