web-dev-qa-db-fra.com

Comment savoir si un paquet particulier est installé sur Ubuntu?

J'ai installé un paquet JDK sur mon Ubuntu 14.04 il y a quelques mois, mais je ne sais pas comment vérifier de quelle version il s'agit.

Alors, comment puis-je savoir si un paquet est installé sur Ubuntu et quelle version de celui-ci est installée?

19
Boyka

TL; DR: Pour une commande simple (no | grep) avec une sortie compacte, vous pouvez utiliser

  • apt list package, qui correspond généralement à ce que vous souhaitez (par rapport à apt-cache policy package), ou
  • dpkg-query -W package en tant que version moins encombrée de dpkg -l package </ em> </ code> .

La commande apt (pour apt list package) est disponible dans Ubuntu 14.04 et versions ultérieures.

apt list vous indique si votre paquet est installé.

apt list package affiche la version d'un package installé ou sur le point d'être installé, ainsi que les noms des composants du référentiel qui le fournissent et la version. Lorsque le package est installé, [installed] apparaît en évidence à la fin de la ligne.

ek@Io:~$ apt list firefox
Listing... Done
firefox/xenial-updates,xenial-security,now 51.0.1+build2-0ubuntu0.16.04.1 AMD64 [installed]
N: There is 1 additional version. Please use the '-a' switch to see it

Outre [installed] à la fin, now dans la liste des composants du référentiel indique que le package est actuellement installé. Voici à quoi ressemble le résultat de apt list pour un paquetage non installé :

ek@Io:~$ apt list dolphin
Listing... Done
dolphin/xenial 4:15.12.3-0ubuntu1 AMD64

Parfois, vous verrez [installed,automatic], ce qui signifie que le paquet a été installé en tant que dépendance d'un autre paquet. Comme il a été installé automatiquement plutôt que manuellement, il peut être supprimé une fois que tous les packages qui en dépendent sont supprimés (comme le fait la commande apt autoremove).

ek@Io:~$ apt list zeitgeist-core
Listing... Done
zeitgeist-core/xenial,now 0.9.16-0ubuntu4 AMD64 [installed,automatic]

Vous pouvez utiliser apt list --installed pour afficher uniquement les packages installés.

Un des avantages de voir une liste même lorsque le package n’est pas installé est que vous savez que est un package du nom que vous avez spécifié. Sinon, si vous l'orthographiez mal par accident, vous pourriez penser que le paquet que vous vouliez dire n'est pas installé.

ek@Io:~$ apt list firefoz
Listing... Done

Mais si vous préférez vraiment que rien n'apparaisse si vous n'avez pas de paquet, utilisez apt list --installed package:

ek@Io:~$ apt list --installed firefox dolphin
Listing... Done
firefox/xenial-updates,xenial-security,now 51.0.1+build2-0ubuntu0.16.04.1 AMD64 [installed]
N: There is 1 additional version. Please use the '-a' switch to see it

Globbing vous aide à lister les paquets dont vous ne connaissez pas ou que vous ne voulez pas taper les noms.

Comme vous venez de le voir, vous pouvez transmettre plusieurs noms de package à apt list. L'autre chose que vous pouvez faire est de le passer a glob , où * représente zéro ou plusieurs caractères et ? représente un caractère. Il y a quelques points à garder à l'esprit:

  • Votre shell aussi développe les globs en noms de fichiers , mais c'est pas ce que vous voulez qu'il se passe ici, vous devriez donc - citez-les toujours (dans '' ou "" ou avec \) lorsque vous les transmettez à apt list.
  • Bien que les deux globs et expressions régulières les deux prennent en charge les classes de caractères (par exemple, [csz]sh correspond à csh, sshzsh), ils ne sont pas identiques et * et ?signifient des choses différentes dans un glob que dans une expression régulière. Ceci est important car d'autres commandes utilisées pour obtenir des informations sur les packages, telles que apt-cache policy package, utilisent des expressions régulières plutôt que des globs. Vous devriez vérifier si une commande utilise des expressions globales ou régulières avant en s'appuyant sur l'une ou l'autre fonctionnalité.
  • Lorsque vous ajoutez et supprimez des paquetages, vous ne devez pas confondre globs avec des expressions régulières. apt list 'wine*' listes tous les paquets dont le nom commence par wine, mais apt remove 'wine*' supprime tous les paquets avec win (même sans le e) n'importe où dans leur nom!

Supposons, par exemple, que je connaisse le paquet qui m'intéresse et que son nom porte soap et qu'il se termine par cil, mais c'est tout ce dont je me souviens:

ek@Io:~$ apt list '*soap*cil'
Listing... Done
libmono-system-runtime-serialization-formatters-soap4.0-cil/xenial,xenial,now 4.2.1.102+dfsg2-7ubuntu4 all [installed,automatic]

Globbing est également utile lorsque vous connaissez le nom complet du paquet qui vous intéresse, mais que vous ne voulez pas le taper. Ou lorsque plusieurs packages correspondant au glob vous intéressent:

ek@Io:~$ apt list 'firefox-locale-*'
Listing... Done
firefox-locale-af/xenial-updates,xenial-security 51.0.1+build2-0ubuntu0.16.04.1 AMD64
firefox-locale-an/xenial-updates,xenial-security 51.0.1+build2-0ubuntu0.16.04.1 AMD64
firefox-locale-ar/xenial-updates,xenial-security 51.0.1+build2-0ubuntu0.16.04.1 AMD64
firefox-locale-as/xenial-updates,xenial-security 51.0.1+build2-0ubuntu0.16.04.1 AMD64
firefox-locale-ast/xenial-updates,xenial-security 51.0.1+build2-0ubuntu0.16.04.1 AMD64
firefox-locale-az/xenial-updates,xenial-security 51.0.1+build2-0ubuntu0.16.04.1 AMD64
firefox-locale-be/xenial-updates,xenial-security 51.0.1+build2-0ubuntu0.16.04.1 AMD64
firefox-locale-bg/xenial-updates,xenial-security 51.0.1+build2-0ubuntu0.16.04.1 AMD64
firefox-locale-bn/xenial-updates,xenial-security 51.0.1+build2-0ubuntu0.16.04.1 AMD64
firefox-locale-br/xenial-updates,xenial-security 51.0.1+build2-0ubuntu0.16.04.1 AMD64
firefox-locale-bs/xenial-updates,xenial-security 51.0.1+build2-0ubuntu0.16.04.1 AMD64
firefox-locale-ca/xenial-updates,xenial-security 51.0.1+build2-0ubuntu0.16.04.1 AMD64
firefox-locale-cak/xenial-updates,xenial-security 51.0.1+build2-0ubuntu0.16.04.1 AMD64
firefox-locale-cs/xenial-updates,xenial-security 51.0.1+build2-0ubuntu0.16.04.1 AMD64
firefox-locale-csb/xenial-updates,xenial-security 51.0.1+build2-0ubuntu0.16.04.1 AMD64
firefox-locale-cy/xenial-updates,xenial-security 51.0.1+build2-0ubuntu0.16.04.1 AMD64
firefox-locale-da/xenial-updates,xenial-security 51.0.1+build2-0ubuntu0.16.04.1 AMD64
firefox-locale-de/xenial-updates,xenial-security 51.0.1+build2-0ubuntu0.16.04.1 AMD64
firefox-locale-el/xenial-updates,xenial-security 51.0.1+build2-0ubuntu0.16.04.1 AMD64
firefox-locale-en/xenial-updates,xenial-security,now 51.0.1+build2-0ubuntu0.16.04.1 AMD64 [installed]
firefox-locale-eo/xenial-updates,xenial-security 51.0.1+build2-0ubuntu0.16.04.1 AMD64
firefox-locale-es/xenial-updates,xenial-security 51.0.1+build2-0ubuntu0.16.04.1 AMD64
firefox-locale-et/xenial-updates,xenial-security 51.0.1+build2-0ubuntu0.16.04.1 AMD64
firefox-locale-eu/xenial-updates,xenial-security 51.0.1+build2-0ubuntu0.16.04.1 AMD64
firefox-locale-fa/xenial-updates,xenial-security 51.0.1+build2-0ubuntu0.16.04.1 AMD64
firefox-locale-fi/xenial-updates,xenial-security 51.0.1+build2-0ubuntu0.16.04.1 AMD64
firefox-locale-fr/xenial-updates,xenial-security 51.0.1+build2-0ubuntu0.16.04.1 AMD64
firefox-locale-fy/xenial-updates,xenial-security 51.0.1+build2-0ubuntu0.16.04.1 AMD64
firefox-locale-ga/xenial-updates,xenial-security 51.0.1+build2-0ubuntu0.16.04.1 AMD64
firefox-locale-Gd/xenial-updates,xenial-security 51.0.1+build2-0ubuntu0.16.04.1 AMD64
firefox-locale-gl/xenial-updates,xenial-security 51.0.1+build2-0ubuntu0.16.04.1 AMD64
firefox-locale-gn/xenial-updates,xenial-security 51.0.1+build2-0ubuntu0.16.04.1 AMD64
firefox-locale-gu/xenial-updates,xenial-security 51.0.1+build2-0ubuntu0.16.04.1 AMD64
firefox-locale-he/xenial-updates,xenial-security 51.0.1+build2-0ubuntu0.16.04.1 AMD64
firefox-locale-hi/xenial-updates,xenial-security 51.0.1+build2-0ubuntu0.16.04.1 AMD64
firefox-locale-hr/xenial-updates,xenial-security 51.0.1+build2-0ubuntu0.16.04.1 AMD64
firefox-locale-hsb/xenial-updates,xenial-security 51.0.1+build2-0ubuntu0.16.04.1 AMD64
firefox-locale-hu/xenial-updates,xenial-security 51.0.1+build2-0ubuntu0.16.04.1 AMD64
firefox-locale-hy/xenial-updates,xenial-security 51.0.1+build2-0ubuntu0.16.04.1 AMD64
firefox-locale-id/xenial-updates,xenial-security 51.0.1+build2-0ubuntu0.16.04.1 AMD64
firefox-locale-is/xenial-updates,xenial-security 51.0.1+build2-0ubuntu0.16.04.1 AMD64
firefox-locale-it/xenial-updates,xenial-security 51.0.1+build2-0ubuntu0.16.04.1 AMD64
firefox-locale-ja/xenial-updates,xenial-security 51.0.1+build2-0ubuntu0.16.04.1 AMD64
firefox-locale-ka/xenial-updates,xenial-security 51.0.1+build2-0ubuntu0.16.04.1 AMD64
firefox-locale-kab/xenial-updates,xenial-security 51.0.1+build2-0ubuntu0.16.04.1 AMD64
firefox-locale-kk/xenial-updates,xenial-security 51.0.1+build2-0ubuntu0.16.04.1 AMD64
firefox-locale-km/xenial-updates,xenial-security 51.0.1+build2-0ubuntu0.16.04.1 AMD64
firefox-locale-kn/xenial-updates,xenial-security 51.0.1+build2-0ubuntu0.16.04.1 AMD64
firefox-locale-ko/xenial-updates,xenial-security 51.0.1+build2-0ubuntu0.16.04.1 AMD64
firefox-locale-ku/xenial-updates,xenial-security 51.0.1+build2-0ubuntu0.16.04.1 AMD64
firefox-locale-lg/xenial-updates,xenial-security 51.0.1+build2-0ubuntu0.16.04.1 AMD64
firefox-locale-lt/xenial-updates,xenial-security 51.0.1+build2-0ubuntu0.16.04.1 AMD64
firefox-locale-lv/xenial-updates,xenial-security 51.0.1+build2-0ubuntu0.16.04.1 AMD64
firefox-locale-mai/xenial-updates,xenial-security 51.0.1+build2-0ubuntu0.16.04.1 AMD64
firefox-locale-mk/xenial-updates,xenial-security 51.0.1+build2-0ubuntu0.16.04.1 AMD64
firefox-locale-ml/xenial-updates,xenial-security 51.0.1+build2-0ubuntu0.16.04.1 AMD64
firefox-locale-mn/xenial-updates,xenial-security 51.0.1+build2-0ubuntu0.16.04.1 AMD64
firefox-locale-mr/xenial-updates,xenial-security 51.0.1+build2-0ubuntu0.16.04.1 AMD64
firefox-locale-ms/xenial-updates,xenial-security 51.0.1+build2-0ubuntu0.16.04.1 AMD64
firefox-locale-nb/xenial-updates,xenial-security 51.0.1+build2-0ubuntu0.16.04.1 AMD64
firefox-locale-nl/xenial-updates,xenial-security 51.0.1+build2-0ubuntu0.16.04.1 AMD64
firefox-locale-nn/xenial-updates,xenial-security 51.0.1+build2-0ubuntu0.16.04.1 AMD64
firefox-locale-nso/xenial-updates,xenial-security 51.0.1+build2-0ubuntu0.16.04.1 AMD64
firefox-locale-oc/xenial-updates,xenial-security 51.0.1+build2-0ubuntu0.16.04.1 AMD64
firefox-locale-or/xenial-updates,xenial-security 51.0.1+build2-0ubuntu0.16.04.1 AMD64
firefox-locale-pa/xenial-updates,xenial-security 51.0.1+build2-0ubuntu0.16.04.1 AMD64
firefox-locale-pl/xenial-updates,xenial-security 51.0.1+build2-0ubuntu0.16.04.1 AMD64
firefox-locale-pt/xenial-updates,xenial-security 51.0.1+build2-0ubuntu0.16.04.1 AMD64
firefox-locale-ro/xenial-updates,xenial-security 51.0.1+build2-0ubuntu0.16.04.1 AMD64
firefox-locale-ru/xenial-updates,xenial-security 51.0.1+build2-0ubuntu0.16.04.1 AMD64
firefox-locale-si/xenial-updates,xenial-security 51.0.1+build2-0ubuntu0.16.04.1 AMD64
firefox-locale-sk/xenial-updates,xenial-security 51.0.1+build2-0ubuntu0.16.04.1 AMD64
firefox-locale-sl/xenial-updates,xenial-security 51.0.1+build2-0ubuntu0.16.04.1 AMD64
firefox-locale-sq/xenial-updates,xenial-security 51.0.1+build2-0ubuntu0.16.04.1 AMD64
firefox-locale-sr/xenial-updates,xenial-security 51.0.1+build2-0ubuntu0.16.04.1 AMD64
firefox-locale-sv/xenial-updates,xenial-security 51.0.1+build2-0ubuntu0.16.04.1 AMD64
firefox-locale-sw/xenial-updates,xenial-security 51.0.1+build2-0ubuntu0.16.04.1 AMD64
firefox-locale-ta/xenial-updates,xenial-security 51.0.1+build2-0ubuntu0.16.04.1 AMD64
firefox-locale-te/xenial-updates,xenial-security 51.0.1+build2-0ubuntu0.16.04.1 AMD64
firefox-locale-th/xenial-updates,xenial-security 51.0.1+build2-0ubuntu0.16.04.1 AMD64
firefox-locale-tr/xenial-updates,xenial-security 51.0.1+build2-0ubuntu0.16.04.1 AMD64
firefox-locale-uk/xenial-updates,xenial-security 51.0.1+build2-0ubuntu0.16.04.1 AMD64
firefox-locale-uz/xenial-updates,xenial-security 51.0.1+build2-0ubuntu0.16.04.1 AMD64
firefox-locale-vi/xenial-updates,xenial-security 51.0.1+build2-0ubuntu0.16.04.1 AMD64
firefox-locale-xh/xenial-updates,xenial-security 51.0.1+build2-0ubuntu0.16.04.1 AMD64
firefox-locale-zh-hans/xenial-updates,xenial-security 51.0.1+build2-0ubuntu0.16.04.1 AMD64
firefox-locale-zh-hant/xenial-updates,xenial-security 51.0.1+build2-0ubuntu0.16.04.1 AMD64
firefox-locale-zu/xenial-updates,xenial-security 51.0.1+build2-0ubuntu0.16.04.1 AMD64

Cela fait beaucoup de paquets. (Bien que pas autant que si j'avais exécuté apt list '*', qui répertorie tous les paquets disponibles!) Heureusement, les globs fonctionnent aussi avec --installed:

ek@Io:~$ apt list --installed 'firefox-locale-*'
Listing... Done
firefox-locale-en/xenial-updates,xenial-security,now 51.0.1+build2-0ubuntu0.16.04.1 AMD64 [installed]
N: There is 1 additional version. Please use the '-a' switch to see it

apt list vs. dpkg-query -W

Une autre commande que vous pouvez utiliser est dpkg-query -W package. Ceci est similaire à dpkg -l , mais sa sortie est plus simple et lisible, car seuls le nom du package et la version installée (le cas échéant) sont imprimés.

dpkg-query -W liste tous les paquets que dpkg sait qui correspond au nom ou au motif global que vous lui donnez. Cela inclut les packages installés et les packages qui ne le sont pas, mais auxquels un autre package fait référence. Vous pouvez savoir quels paquets sont réellement installés car le numéro de version/la chaîne installée est imprimée à la droite du nom. Par exemple, sur mon système 16.04:

ek@Io:~$ dpkg-query -W wine-\*
wine-AMD64
wine-gecko
wine-gecko2.21:AMD64    2.21-0ubuntu1
wine-gecko2.21:i386     2.21-0ubuntu1
wine-i386
wine-mono
wine-mono0.0.8  0.0.8-0ubuntu1

Ainsi, des packages listés, wine-gecko2.21:AMD64 et wine-gecko2.21:i386 (c'est-à-dire wine-gecko2.21 pour les architectures AMD64 et i386) et wine-mono0.0.8 sont ceux que j'ai actuellement installés.

dpkg-query -W et apt list seront toujours au courant des packages installés, qu'ils soient fournis ou non par une source logicielle actuellement configurée et qu'ils soient ou non référencés par d'autres packages. Toutefois:

  • apt list connaît également les packages disponibles à partir de toute source logicielle actuellement configurée, mais pas des packages indisponibles auxquels d'autres packages font référence.
  • dpkg-query -W (comme dpkg -l) ne reflète pas directement les packages réellement disponibles, mais connaît les packages référencés par tous les packages installés.

Sur la même machine:

ek@Io:~$ apt list wine-\*
Listing... Done
wine-development/xenial,xenial 1.9.6-1 all
wine-gecko2.21/xenial,now 2.21-0ubuntu1 AMD64 [installed,automatic]
wine-mono0.0.8/xenial,xenial,now 0.0.8-0ubuntu1 all [installed,automatic]

Comme avec dpkg -l, lorsque vous exécutez dpkg-query -W avec le nom d'un paquet que vous n'avez pas (par exemple, je n'ai pas installé chocolate-Doom), la sortie est la même que lorsque vous l'exécutez avec le nom d'un paquet qui ne le fait pas. t n’existe pas du tout (par exemple, à cause de fautes d’orthographe, comme firefoz):

ek@Io:~$ dpkg-query -W chocolate-Doom firefoz
dpkg-query: no packages found matching chocolate-Doom
dpkg-query: no packages found matching firefoz

En revanche, apt list indique explicitement que seul chocolate-Doom existe (mais n’est pas installé):

ek@Io:~$ apt list chocolate-Doom firefoz
Listing... Done
chocolate-Doom/xenial 2.2.1-2.1 AMD64
21
Eliah Kagan

Dans un terminal, exécutez dpkg -l | grep <name or pattern>. Par exemple,

dpkg -l | grep firefox
ii  firefox       51.0.1+build2-0ubuntu0.14.04.2                      AMD64 

Le nom ii signifie qu'il est installé. Évidemment, s'il n'y a pas de sortie, le paquet n'est pas installé.

9
mikewhatever

Si vous connaissez le nom du paquet, utilisez la règle apt-cache:

$ apt-cache policy firefox | grep 'Installed:'                                                                           
  Installed: 51.0.1+build2-0ubuntu0.16.04.1
$ apt-cache policy golang | grep 'Installed:'                                                                            
  Installed: (none)

Si vous ne le faites pas, utilisez dpkg --get-selections | grep 'jdk'

$ dpkg --get-selections | grep 'jdk'
jdk1.8.0-111                    deinstall
openjdk-7-jre-headless:AMD64            deinstall
openjdk-8-jdk:AMD64             install
openjdk-8-jdk-headless:AMD64            install
openjdk-8-jre:AMD64             install
openjdk-8-jre-headless:AMD64            install
openjdk-9-jre-headless:AMD64            deinstall
8
Sergiy Kolodyazhnyy

Utilisez commande dpkg, gestionnaire de paquets pour Debian.

>dpkg -s /package name/  

Utilisez fichier/var/lib/dpkg/available pour connaître tous les noms de paquetages disponibles.

Ou vous pouvez utiliser la commande suivante (elle répertorie tous les packages dans /var/lib/dpkg/status ):

>dpkg-query -l  

Vous pouvez également essayer de faire correspondre le nom du paquet en utilisant caractères génériques:

>dpkg-query -l 'libc6*'
4
Boyka