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

35voto

user.dz Points 45060

APT-Clone

Ce paquet peut être utilisé pour cloner/restaurer les paquets sur un système basé sur apt.

  • Il sauvegardera/restaurera les paquets, le fichier sources.list, le trousseau de clés et l'installation automatique. les états d'installation automatique.
  • Il peut également sauvegarder/restaurer les paquets qui ne sont plus téléchargeables en utilisant dpkg-repack.

source : man apt-clone

APT-Clone est utilisé par ubiquity (installateur Ubuntu) pour le processus de mise à niveau. Il est bien meilleur que le dpkg --get-selections solution parce que :

  1. Il préserve toutes les informations des référentiels.
  2. Il garde la trace des paquets qui ont été installés automatiquement.
  3. Il permet de repacker les fichiers DEB installés localement.

Mode d'emploi

  1. Installer

     sudo apt-get install apt-clone
  2. Faire une sauvegarde

     sudo apt-clone clone path-to/apt-clone-state-ubuntu-$(lsb_release -sr)-$(date +%F).tar.gz
  3. Restaurer la sauvegarde

     sudo apt-clone restore path-to/apt-clone-state-ubuntu.tar.gz

    Restaurer une version plus récente :

     sudo apt-clone restore-new-distro path-to/apt-clone-state-ubuntu.tar.gz $(lsb_release -sc)

Structure du résultat

Il crée un simple fichier tar gzippé qui peut être facilement modifié et révisé avant d'être restauré sur les autres machines. Voici un exemple de sa structure :

/
 etc
    apt
        preferences.d
        sources.list
        sources.list.d
           anton_-ubuntu-dnscrypt-vivid.list
           maarten-baert-ubuntu-simplescreenrecorder-vivid.list
           megasync.list
        trusted.gpg
        trusted.gpg.d
            anton__ubuntu_dnscrypt.gpg
            anton__ubuntu_dnscrypt.gpg~
            maarten-baert_ubuntu_simplescreenrecorder.gpg
            maarten-baert_ubuntu_simplescreenrecorder.gpg~
 var
     lib
         apt-clone
             extended_states
             installed.pkgs
             uname

34voto

Nirmik Points 7438

Vous voulez réinstaller les paquets qui sont maintenant là sur 12.04, n'est-ce pas ?

Si oui, c'est très facile. Vous aurez besoin d'un "compte Ubuntu Single Sign On". (Créez-le avant la réinstallation afin que votre système soit synchronisé).

  1. Allez dans le Centre logiciel et cherchez l'option "Synchronisation entre ordinateurs..." dans le menu Fichier.

  2. Lorsque vous cliquez dessus, vous verrez votre ordinateur enregistré et une liste de toutes les applications présentes sur votre ordinateur.

  3. Lorsque vous ferez une nouvelle installation, cet ordinateur sera considéré comme un nouvel ordinateur.

  4. Il vous suffit de vous connecter à votre compte Ubuntu et votre ancien ordinateur sera affiché.

  5. Cliquez dessus ; vous obtiendrez une liste de toutes les applications. Sélectionnez "installer" sur l'application que vous voulez installer.

0 votes

J'ai défini le même nom pour mon ordinateur lors d'une nouvelle installation afin d'éviter un téléchargement énorme depuis le serveur Ubuntu One à chaque fois. Pensez-vous que cela fonctionne pour moi ?

29voto

Maythux Points 77506

Vous pouvez consulter le apt journal en cours /var/log/apt/ et le dpkg journal en cours /var/log/

et vous pouvez obtenir la liste des paquets installés avec une simple commande :

dpkg -l | grep '^ii '

28voto

thinkmassive Points 683

Il y a une excellente explication sur Unix StackExchange qui décrit comment utiliser aptitude pour lister les paquets non installés comme dépendances, et comment comparer cette liste avec la liste des paquets par défaut de votre version d'Ubuntu.

Pour obtenir le fichier manifeste pour les versions de bureau 12.04 et plus récentes, visitez le site ce site choisissez votre version, et faites défiler la page sous les images du CD jusqu'à la section des fichiers. Vous trouverez quelque chose comme "ubuntu-12.04.4-desktop-amd64+mac.manifest" qui correspond à votre architecture.

Pour les versions serveur, vous devrez obtenir le fichier manifeste de l'ISO qui a été utilisé pour installer le système d'origine. Pour un VPS ou un serveur en nuage, votre fournisseur peut mettre les images à disposition ou vous devrez le contacter.

Voici un exemple utilisant le code de l'article référencé, avec des modifications pour l'installer sur le nouveau serveur.

Ancien serveur (code d'un autre poste, sortie enregistrée dans un fichier) :

aptitude search '~i !~M' -F '%p' --disable-columns | sort -u > currently-installed.list
wget -qO - http://mirror.pnl.gov/releases/precise/ubuntu-12.04.3-desktop-amd64.manifest \
  | cut -f1 | sort -u > default-installed.list
comm -23 currently-installed.list default-installed.list > user-installed.list

Sur le nouveau serveur, copiez le fichier en utilisant scp, puis utilisez sed pour ajouter 'install' à chaque ligne (-i effectue un remplacement en ligne). Vous pouvez ensuite utiliser la liste comme entrée de 'dpkg --set-selections' et installer les paquets avec apt-get :

scp user@oldserver:user-installed.list .
sed -i 's/$/\tinstall/' user-installed.list
sudo dpkg --set-selections < user-installed.list
sudo apt-get dselect-upgrade

Avant de commencer cette tâche, je vous recommande de lire et de comprendre toutes les parties du post mentionné au début, puis de consulter le site de l guide de référence des aptitudes pour plus de détails sur les modèles de recherche et les Personnalisation de l'affichage des paquets pour utiliser le -F comme vous le souhaitez.

27voto

ostrokach Points 764

Je suis surpris que le apt-cache commande conçue exactement à cette fin n'a pas été mentionné ci-dessus...

apt-cache pkgnames

Pour plus d'informations, exécutez apt-cache --help :

\*\*apt-cache is a low-level tool used to query information
from APT's binary cache files

Commands:
   gencaches - Build both the package and source cache
   showpkg - Show some general information for a single package
   showsrc - Show source records
   stats - Show some basic statistics
   dump - Show the entire file in a terse form
   dumpavail - Print an available file to stdout
   unmet - Show unmet dependencies
   search - Search the package list for a regex pattern
   show - Show a readable record for the package
   depends - Show raw dependency information for a package
   rdepends - Show reverse dependency information for a package
   **pkgnames - List the names of all packages in the system**
   dotty - Generate package graphs for GraphViz
   xvcg - Generate package graphs for xvcg
   policy - Show policy settings

Options:
  -h   This help text.
  -p=? The package cache.
  -s=? The source cache.
  -q   Disable progress indicator.
  -i   Show only important deps for the unmet command.
  -c=? Read this configuration file
  -o=? Set an arbitrary configuration option, eg -o dir::cache=/tmp
See the apt-cache(8) and apt.conf(5) manual pages for more information.
\*\*

6 votes

TLDR ; J'ai finalement trouvé que apt --installed list donne le meilleur résultat (comme suggéré dans la première réponse ci-dessus). Bien que apt-cache pkgnames semble faire l'affaire à première vue, il liste "tous les paquets du système" (selon le texte d'aide ci-dessus), ce qui inclut également les paquets qu'apt connaît mais qui ne sont pas réellement installés. Il y a un --installed mais cela ne semble pas fonctionner avec l'option pkgnames .

4 votes

apt-cache pkgnames | wc -l donne 55909 (que le système connaît), alors que aptitude search '~i!~M' | wc -l donne 2160 (paquets explicitement installés, sans dépendances).

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