283 votes

Comment puis-je vérifier si un paquet est installé sur mon serveur ?

J'ai récemment installé Ubuntu Server edition 13.10 (Saucy Salamander). Mais j'ai rencontré un petit problème.

À la fin de l'installation, il vous demande si vous voulez ou non plusieurs paquets supplémentaires, comme le serveur OpenSSH et l'hôte de la machine virtuelle. Voici ce que je regarde :

dialog offering packages

Maintenant, mon problème est que je ne me souviens pas si j'ai coché la case "hôte de la machine virtuelle". Comment puis-je vérifier si mon serveur possède les paquets correspondants ?

Quels sont les paquets fournis avec l'hôte de la machine virtuelle ?

9voto

B. Shea Points 860

J'écris une nouvelle réponse comme Tasksel Les "noms de tâches" n'apparaissent pas dans dpkg o apt requêtes. Ce qui signifie que les autres réponses sont incomplètes (ou fausses).

"Je ne me souviens pas si j'ai coché la case 'hôte de la machine virtuelle' "

Vérifiez s'il y a un astérisque à côté du nom après la ré-exécution. sudo tasksel (ou un ' i si vous êtes en cours d'exécution tasksel --list-tasks ).

Si vous ne voyez pas cela, alors vous probablement n'ont pas le "taskel". méta-paquet installé.


"..Comment puis-je vérifier si mon serveur dispose des paquets correspondants ?"

Si vous voulez savoir ce qui est installé sous le méta-paquet des tâches de l'hôte de la machine virtuelle :

tasksel --list-tasks

(dans votre cas tasksel --list-tasks | grep virt est suffisant)

Cela donne la tâche appropriée nom et l'indication qu'il est installé.

Dans votre cas, le nom de cette tâche est virt-host .


"Quels sont les paquets fournis avec l'hôte de la machine virtuelle ?"

A partir de la dernière commande, trouvez le nom de la tâche tasksel. Il est nécessaire pour la commande suivante :

tasksel --task-packages virt-host

Cette liste énumère les méta-paquets individuels de Tasksel (indiqués par un '^' ajouté) qui composent le nom. Dans votre cas, il s'agit de virt-host^ .

Une fois que vous avez trouvé le bon méta-nom, vous pouvez utiliser apt :

 apt show virt-host^ | grep "Package:"

(ou apt-cache show ... wenn apt show ne fonctionne pas).

Cela montrera tous les paquets qui composent le méta-paquet donné.

Dann:

 dpkg -l {each individual pkg name listed above}

Cela vous indiquera si le paquet individuel est installé/désinstallé (noté par la deuxième lettre : le statut 'i' signifie installé). Faites ceci pour tous les paquets listés sous le paquet task/meta.

Cela devrait répondre aux questions initiales.

Note complémentaire : /usr/share/tasksel/descs/ubuntu-tasks.desc contient également des descriptions des méta-paquets de Tasksel. Si vous : grep "virt" /usr/share/tasksel/descs/ubuntu-tasks.desc il affichera le nom correct du méta-paquet APT. (Dans votre cas, c'est ubuntu-virt-server ). Vous pouvez également utiliser apt les commandes avec ce méta-nom.

Si vous souhaitez supprimer les paquets de tâches, cela devient un peu plus compliqué. Veuillez consulter cette réponse à Ask Ubuntu ou toute autre réponse possible.

Veuillez noter que les paquets apt "méta" ne correspondent pas aux noms des paquets Tasksel. Veuillez consulter le Page de la communauté Tasksel pour plus d'informations.

7voto

Blake R Points 169

Utilisez tasksel ( sudo apt-get install tasksel si vous ne l'avez pas encore) et exécutez tasksel --list-tasks .

tasksel imprimera une liste des tâches, et il y aura un bouton i à côté de chaque tâche installée, et d'une u à côté de chaque tâche qui n'est pas installée.

Si vous souhaitez installer la tâche, utilisez tasksel install <task> . Le nom de la tâche que vous recherchez est le suivant virt-host .

Les éléments de sélection du logiciel sont appelés "tâches".

3voto

Claudio Taccogna Points 439

J'ai créé un petit script avec lequel vous pouvez installer automatiquement à partir d'une liste de paquets ou d'applications ou simplement vérifier s'ils sont déjà installés :

#!/bin/bash
apt -qq list YOUR_LIST_GOES_HERE | grep -v "installed" | awk -F/ '{print $1}' > /root/list.txt
packages=$(cat /root/list.txt)
grep -q '[^[:space:]]' < /root/list.txt
CHECK_LIST=$?
if [[ $CHECK_LIST -eq 1 ]]; then
echo "Your packages are already installed"
else
echo "Installing packages"
apt-get  install -y $packages
fi

J'espère que cela aidera quelqu'un.

3voto

Vérifier si certains paquets sont installés et installer ceux qui manquent sinon

pkgs='hello certbot'
install=false
for pkg in $pkgs; do
  status="$(dpkg-query -W --showformat='${db:Status-Status}' "$pkg" 2>&1)"
  if [ ! $? = 0 ] || [ ! "$status" = installed ]; then
    install=true
    break
  fi
done
if "$install"; then
  sudo apt install $pkgs
fi

Plus d'informations sur le site : https://stackoverflow.com/questions/1298066/check-if-an-apt-get-package-is-installed-and-then-install-it-if-its-not-on-linu/54239534#54239534

Technique similaire mentionnée précédemment à : https://askubuntu.com/a/1102572/52975

1voto

Franklin Yu Points 111

Une autre façon (pas nécessairement meilleure) : voir si le champ APT-Manual-Installed apparaît dans apt show <pkgname> . S'il est absent, le paquet n'est pas installé. Malheureusement, il n'est pas affiché dans apt-cache show <pkgname> .

Comme toujours, le apt est destiné à une utilisation interactive et n'est pas recommandé pour les scripts.

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