Como obter o nome do pacote lib apropriado para um arquivo de cabeçalho específico [duplicado]

2

É um problema comum que recebemos algum erro como "abc.h no such file" quando compilar a fonte. Única maneira de encontrar a solução (como eu sei) é pesquisar na internet. O que eu preciso fazer, compilar a fonte, vai me dar alguns erros e então eu tenho que instalar o dev pesquisando na internet.

Existe alguma maneira que eu possa obter o nome do pacote lib pelo nome do arquivo de cabeçalho? Suponha que eu precise de crypto.h file, libssl-dev contém este arquivo.

Mas como eu poderia saber? Onde devo procurar por ele? Existe algum site ou programa de referência?

    
por shantanu 26.06.2014 / 10:02

1 resposta

5

Isto assemelha-se à pergunta Como faço para encontrar o pacote que fornece um arquivo?

Como você está procurando pacotes que não tem em seu sistema, recomendo usar apt-file search <header file> . Você pode ajustar sua pesquisa para evitar a expansão (ou seja, não liste foocrypto.html se você estiver procurando por crypto.h ).

Seu comando seria parecido com apt-file -x search '/crypto.h$'

user@host$ apt-file -x search '/crypto.h$'

aroarfw-dev: /usr/include/aroarfw/crypto.h
asterisk-dev: /usr/include/asterisk/crypto.h
crtmpserver-dev: /usr/include/crtmpserver/common/utils/misc/crypto.h
libfaifa-dev: /usr/include/faifa/crypto.h
libgnutls-dev: /usr/include/gnutls/crypto.h
libntfs-dev: /usr/include/ntfs/crypto.h
libroar-dev: /usr/include/libroar/crypto.h
libsrtp0-dev: /usr/include/srtp/crypto.h
libssl-dev: /usr/include/openssl/crypto.h
libsyslog-ng-dev: /usr/include/syslog-ng/crypto.h
libxmlsec1-dev: /usr/include/xmlsec1/xmlsec/crypto.h
libxmlsec1-dev: /usr/include/xmlsec1/xmlsec/gcrypt/crypto.h
libxmlsec1-dev: /usr/include/xmlsec1/xmlsec/gnutls/crypto.h
libxmlsec1-dev: /usr/include/xmlsec1/xmlsec/nss/crypto.h
libxmlsec1-dev: /usr/include/xmlsec1/xmlsec/openssl/crypto.h
linux-headers-3.2.0-4-amd64: /usr/src/linux-headers-3.2.0-4-amd64/include/config/crypto.h
linux-headers-3.2.0-4-amd64: /usr/src/linux-headers-3.2.0-4-amd64/include/config/rt2x00/lib/crypto.h
linux-headers-3.2.0-4-common: /usr/src/linux-headers-3.2.0-4-common/include/linux/crypto.h
linux-headers-3.2.0-4-common-rt: /usr/src/linux-headers-3.2.0-4-common-rt/include/linux/crypto.h
linux-headers-3.2.0-4-rt-amd64: /usr/src/linux-headers-3.2.0-4-rt-amd64/include/config/crypto.h
linux-headers-3.2.0-4-rt-amd64: /usr/src/linux-headers-3.2.0-4-rt-amd64/include/config/rt2x00/lib/crypto.h

Além disso, se você souber de antemão que o pacote é chamado algo-dev ou libsomething-dev você pode canalizá-lo para grep .

apt-file -x search '/crypto.h$' | grep '^lib[^:]*-dev'

Isso retorna apenas pacotes chamados lib * -dev .

Finalmente, se você quer apenas o nome dos pacotes (e não o caminho para o arquivo) para obter uma boa lista de pacotes (um por linha), você pode usar grep -o em vez disso.

apt-file -x search '/crypto.h$' | grep -o '^lib[^:]*-dev'

Codificação feliz:)

    
por CijcoSistems 26.06.2014 / 12:34