web-dev-qa-db-fra.com

Comment obtenir le nom de paquetage lib approprié pour un fichier d'en-tête spécifique

Il est fréquent que nous obtenions une erreur telle que "abc.h no such file" lors de la compilation du code source. Le seul moyen de trouver la solution (à ma connaissance) est la recherche sur Internet. Ce que je dois faire, compiler le code source, cela me donnera des erreurs puis je dois installer le dev en effectuant une recherche sur Internet.

Est-il possible d'obtenir le nom du paquet lib par le nom du fichier d'en-tête? Supposons que j'ai besoin du fichier crypto.h, libssl-dev contient ce fichier.

Mais comment pourrais-je savoir? Où devrais-je chercher? Existe-t-il un site ou un programme de référence?

3
shantanu

Cela ressemble à la question Comment trouver le paquet qui fournit un fichier?

Puisque vous recherchez des paquets que vous n'avez pas dans votre système, je vous recommande d'utiliser apt-file search <header file>. Vous pouvez affiner votre recherche pour éviter l’extension (c’est-à-dire, ne listez pas foocrypto.html si vous recherchez crypto.h ).

Votre commande ressemblerait à 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

De plus, si vous savez à l’avance que le paquet est nommé quelque chose-dev ou libsomething-dev vous pouvez le diriger vers grep.

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

Cela ne renvoie que les paquets nommés lib * -dev .

Enfin, si vous ne voulez que le nom des packages (et non le chemin du fichier), vous obtenez ainsi une belle liste de packages (un par ligne). ), vous pouvez utiliser grep -o à la place.

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

Bonne codage :)

8
CijcoSistems