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?
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 :)