2408 votes

Comment lister tous les paquets installés

J'aimerais sortir une liste de tous les paquets installés dans un fichier texte afin de pouvoir la consulter et l'installer en masse sur un autre système. Comment dois-je procéder ?

11 votes

4 votes

2761voto

Sabacon Points 36458

Ubuntu 14.04 et plus

Le site apt sur Ubuntu 14.04 et supérieur rend cela très facile.

apt list --installed

Versions plus anciennes

Pour obtenir une liste des paquets installés localement, faites ceci dans votre terminal :

dpkg --get-selections | grep -v deinstall

(Le -v tag "inverse" grep pour retourner les lignes non correspondantes)

Pour obtenir la liste d'un paquet spécifique installé :

dpkg --get-selections | grep postgres

Pour enregistrer cette liste dans un fichier texte appelé packages sur votre bureau, faites ceci dans votre terminal :

dpkg --get-selections | grep -v deinstall > ~/Desktop/packages

Sinon, il suffit d'utiliser

dpkg -l

(vous n'avez pas besoin d'exécuter ces commandes en tant que superutilisateur, donc pas de sudo ou toute autre variante nécessaire ici)

40 votes

Ensuite, lors de l'installation sur le nouvel ordinateur, procédez comme suit cat ~/Desktop/packages > sudo dpkg --set-selections && sudo apt-get dselect upgrade source

14 votes

La syntaxe de dpkg a peut-être légèrement changé depuis 2006, car cette commande n'a pas fonctionné pour moi, @koanhead. sudo dpkg --set-selections < ~/Desktop/packages && sudo apt-get -u dselect-upgrade fait l'affaire.

249 votes

Notez que cela ne permet pas de savoir quels paquets ont été explicitement installés par l'utilisateur et lesquels ont été installés en tant que dépendances. Cela signifie que si vous utilisez cette méthode pour recréer votre installation sur une autre machine, apt ne sera pas en mesure de supprimer les dépendances inutiles lorsque vous supprimez un paquet donné.

482voto

intuited Points 6895

Pour obtenir uniquement les paquets qui ont été expressément installés (et pas seulement ceux qui ont été installés en tant que dépendances), vous pouvez exécuter la commande suivante

aptitude search '~i!~M'

Cela comprendra également une brève description, que vous pouvez souhaiter. Si ce n'est pas le cas, ajoutez également l'option -F '%p' comme indiqué par karthick87.


Une autre option encore semble être de copier le fichier /var/lib/apt/extended_states qui est une base de données de type fichier texte dans ce format :

Package: grub-common
Architecture: amd64
Auto-Installed: 0

Package: linux-headers-2.6.35-22-generic
Architecture: amd64
Auto-Installed: 1

Auto-Installed: 0 indique que le paquet a été expressément installé et n'est pas simplement une dépendance.

60 votes

Cela devrait être la bonne réponse. Pourquoi lister les dépendances ?

13 votes

Ce site devrait être la solution, mais en utilisant aptitude n'est pas très fiable à cause de Multiarch actuellement (corrections en cours), malheureusement. Toujours +1 pour avoir signalé le fait de ne lister que les paquets explicitement installés et un moyen de le faire (bien que cela ne fonctionne pas sur 11.10+ actuellement).

0 votes

@gertvdijk : Intéressant pouvez-vous fournir un lien avec une explication plus détaillée ?

247voto

bcl Points 2485

Pour lister tous les paquets intention intention de l'installation (pas en tant que dépendances) par les commandes apt, exécutez les commandes suivantes :

(zcat $(ls -tr /var/log/apt/history.log*.gz); cat /var/log/apt/history.log) 2>/dev/null |
  egrep '^(Start-Date:|Commandline:)' |
  grep -v aptdaemon |
  egrep '^Commandline:'

Cela fournit une vue inversée dans le temps, les commandes les plus anciennes étant listées en premier :

Commandline: apt-get install k3b
Commandline: apt-get install jhead
...

Les données d'installation montrent également l'utilisation de synaptic, mais sans détails (de même que la date d'installation) :

(zcat $(ls -tr /var/log/apt/history.log*.gz); cat /var/log/apt/history.log) 2>/dev/null |
  egrep '^(Start-Date:|Commandline:)' |
  grep -v aptdaemon |
  egrep -B1 '^Commandline:'

en fournissant les éléments suivants :

Start-Date: 2012-09-23  14:02:14
Commandline: apt-get install gparted
Start-Date: 2012-09-23  15:02:51
Commandline: apt-get install sysstat
...

3 votes

Ou (avec zgrep et en supprimant les messages de mise à jour) : zgrep -hE '^(Start-Date:|Commandline:)' $(ls -tr /var/log/apt/history.log*.gz ) | egrep -v 'aptdaemon|upgrade' | egrep -B1 '^Commandline:'

3 votes

Est-ce que cette approche manque les paquets installés avec dpkg ? ?

8 votes

Alors que les réponses simples ci-dessus sont bonnes pour l'utilisateur général. Cette méthode est de loin la meilleure pour retracer toutes les personnalisations effectuées sur la machine, car elle montre également ce qui a été supprimé ou ajouté à l'image de base, en les listant dans l'ordre où ils ont été effectués, et vous aide à vous souvenir de l'ordre correct pour les rajouter dans un autre système.

206voto

gogaman Points 2175

Créez une sauvegarde des paquets actuellement installés :

dpkg --get-selections > list.txt

Ensuite (sur un autre système), restaurez les installations à partir de cette liste :

dpkg --clear-selections
sudo dpkg --set-selections < list.txt

Pour se débarrasser des paquets périmés :

sudo apt-get autoremove

Pour être installé comme au moment de la sauvegarde (c'est-à-dire pour installer les paquets définis par dpkg --set-selections ) :

sudo apt-get dselect-upgrade

8 votes

Bon conseil pour la restauration sur une autre machine. +1.

16 votes

En migrant entre 2 machines ubuntu 12.04 différentes, cette approche a cassé mon système. il m'a fallu un certain temps avant de réaliser que d'une manière ou d'une autre, le système avait été endommagé. ubuntu-desktop a été désinstallé - probablement à cause d'une des commandes dpkg. faites attention, il m'a fallu des heures pour réparer les dégâts !

1 votes

Et parfois le système met à jour une application que vous souhaitez spécifiquement que le système ne touche plus jamais, faites-le à la fin des commandes sudo apt-mark hold name-your-package . Cela empêchera apt-get de mettre à niveau vers la version actuelle qui est la version par défaut pour le processus de mise à jour.

92voto

Tim Tisdall Points 1351
apt-mark showmanual

l'état des pages du manuel :

imprimera une liste des paquets installés manuellement

Ainsi, il devrait juste donner une liste des paquets explicitement installés (bien que cela inclue les paquets qui faisaient partie de l'installation initiale par défaut) sans toutes les dépendances incluses en raison de l'installation de ces paquets.

Pour sortir le résultat dans un fichier texte :

apt-mark showmanual > list-manually-installed.txt

0 votes

Sur Debian, "apt-mark showmanual" ne fonctionne pas sur "squeeze" mais fonctionne sur "wheezy".

14 votes

Comme pour la plupart des autres réponses, apt-mark showmanual ne le fait pas vraiment. Elle liste également des tonnes de paquets installés automatiquement, faisant probablement partie de l'installation de base.

8 votes

La question portait sur les paquets installés et ceci donne tous les paquets installés moins les dépendances installées automatiquement. Il inclut les paquets initiaux qui font partie de l'installation initiale. Je suppose que vous pourriez l'exécuter sur une nouvelle installation pour obtenir une liste des installations par défaut, puis la soustraire de cette liste pour voir la différence.

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