230 votes

Comment vérifier si une bibliothèque est installée ?

Sous Linux, comment vérifier si une bibliothèque est installée ou non ? (à partir de la ligne de commande, bien sûr).

Dans mon cas spécifique, je veux vérifier si libjpeg est installé.

0 votes

Quelle distribution utilisez-vous ?

8voto

Saasira Points 173

Sur les systèmes basés sur Redhat, on peut utiliser pkg-config pour vérifier si une bibliothèque est installée ou non. De nombreux binaires rpm effectuent en fait les mêmes vérifications avant de procéder à l'installation, nous pouvons donc raisonnablement nous fier à sa véracité.

pkg-config --cflags jpeg

pkg-config --libs jpeg

pkg-config --cflags "jpeg >= 1.0.0" # for version check
pkg-config  --modversion jpeg | awk -F. '{ printf "0x%02X%02X%02X\n",$1,$2,$3 }' #version check

2voto

nik Points 6970

C'est ce que font les outils de configuration sous Linux en permanence.

Regardez ça. Tutoriel sur autoconf et KDevelop .

D'autres astuces consisteraient à utiliser des commandes comme ldconfig y dpkg .

2voto

Peter Goodall Points 21

Sur Ubuntu 20.04, je suis capable d'afficher une multitude d'informations pertinentes pour un paquet en utilisant aptitude.

% aptitude show libssl-dev
Package: libssl-dev                      
Version: 1.1.1f-1ubuntu2.1
State: installed
Automatically installed: no
Multi-Arch: same
Priority: optional
Section: libdevel
Maintainer: Ubuntu Developers <ubuntu-devel-discuss@lists.ubuntu.com>
Architecture: amd64
Uncompressed Size: 8,006 k
Depends: libssl1.1 (= 1.1.1f-1ubuntu2.1)
Suggests: libssl-doc
Conflicts: libssl1.0-dev
Breaks: libssl-dev:i386 (!= 1.1.1f-1ubuntu2.1)
Replaces: libssl-dev:i386 (< 1.1.1f-1ubuntu2.1)
Description: Secure Sockets Layer toolkit - development files
 This package is part of the OpenSSL project's implementation of the SSL and TLS cryptographic protocols for secure communication over
 the Internet. 

 It contains development libraries, header files, and manpages for libssl and libcrypto.
Homepage: https://www.openssl.org/

Pour trouver quel paquet fournirait un fichier particulier, j'ai trouvé apt-file très utile - quelques instructions sont ici : https://linuxhint.com/find_which_package_contains_specific_file_ubuntu/

% apt-file search 'libjpeg.so'          
darktable: /usr/lib/x86_64-linux-gnu/darktable/plugins/imageio/format/libjpeg.so
libjpeg-turbo8: /usr/lib/x86_64-linux-gnu/libjpeg.so.8
libjpeg-turbo8: /usr/lib/x86_64-linux-gnu/libjpeg.so.8.2.2
libjpeg-turbo8-dev: /usr/lib/x86_64-linux-gnu/libjpeg.so
libjpeg62: /usr/lib/x86_64-linux-gnu/libjpeg.so.62
libjpeg62: /usr/lib/x86_64-linux-gnu/libjpeg.so.62.0.0
libjpeg62-dev: /usr/lib/x86_64-linux-gnu/libjpeg.so
libjpeg9: /usr/lib/x86_64-linux-gnu/libjpeg.so.9
libjpeg9: /usr/lib/x86_64-linux-gnu/libjpeg.so.9.4.0
libjpeg9-dev: /usr/lib/x86_64-linux-gnu/libjpeg.so
libxine2-misc-plugins: /usr/lib/x86_64-linux-gnu/xine/plugins/2.7/xineplug_decode_libjpeg.so
nsight-systems: /usr/lib/nsight-systems/Host-x86_64/libjpeg.so.8

1voto

Scott Yang Points 11

Vous pouvez également essayer d'utiliser dpkg pour vérifier s'il est installé.

dpkg --list | grep [some_key_words_of_your_lib]

D'ailleurs, sur CentOS, vous pouvez essayer ceci.

rpm -qa [lib_name]

0 votes

Note : Ne fonctionne que pour les distros basées sur Debian.

0 votes

@ALex_hha Oui, merci, il faut le souligner. Sur les systèmes basés sur CentOS ou red hat, utilisez pkg-config au lieu de cela.

0voto

BETLOG Points 3

Comme pour Kim ci-dessus

dpkg -s nom du paquet

[[ $(dpkg -s libsox-fmt-pulse 2> /dev/null) =~ "is not installed" ]] && sudo apt install libsox-fmt-pulse # for hdmi output

SistemesEz.com

SystemesEZ est une communauté de sysadmins où vous pouvez résoudre vos problèmes et vos doutes. Vous pouvez consulter les questions des autres sysadmins, poser vos propres questions ou résoudre celles des autres.

Powered by:

X