Juste le code
aptitude search '~i !~M' -F '%p' --disable-columns | sort -u > currentlyinstalled.txt
wget -qO - http://mirror.pnl.gov/releases/precise/ubuntu-12.04.3-desktop-amd64.manifest \
| cut -f1 | sort -u > defaultinstalled.txt
comm -23 currentlyinstalled.txt defaultinstalled.txt
Explication
Une façon de penser à ce problème est de la diviser en trois parties:
- Comment obtenir une liste de paquets non installés en tant que dépendances?
- Comment obtenir une liste des packages installés par défaut?
- Comment puis-je obtenir la différence entre ces deux listes?
Comment obtenir une liste de paquets non installés en tant que dépendances?
La commande suivante semble fonctionner sur mon système:
$ aptitude search '~i !~M' -F '%p' --disable-columns | sort -u > currentlyinstalled.txt
Des liens similaires peuvent être trouvés dans les liens que Gilles a postés en tant que commentaire à la question. Certaines sources affirment que cela ne fonctionnera que si vous avez utilisé aptitude pour installer les paquets. Cependant, je n’utilise presque jamais aptitude pour installer des paquets et j’ai trouvé que cela fonctionnait toujours. Les --disable-columns
empêche l' aptitude des lignes de rembourrage noms de paquets avec des blancs qui entraveraient la comparaison ci - dessous. Le | sort -u
trie le fichier et supprime les doublons. Cela rend l'étape finale beaucoup plus facile.
Comment obtenir une liste des packages installés par défaut?
Remarque: cette section commence par un «mauvais chemin» qui, à mon avis, est illustratif. Le deuxième morceau de code est celui qui fonctionne.
C'est un peu plus compliqué. Au départ, je pensais qu'une bonne approximation serait l'ensemble des paquets qui sont des dépendances des méta-paquets ubuntu-minimal, ubuntu-standard, ubuntu-desktop et des divers paquets liés au noyau Linux. Quelques résultats sur les recherches Google semblent utiliser cette approche. Pour obtenir une liste de ces dépendances, j'ai d'abord essayé ce qui suit (ce qui n'a pas fonctionné):
$ apt-cache depends ubuntu-desktop ubuntu-minimal ubuntu-standard linux-* | awk '/Depends:/ {print $2}' | sort -u
Cela semble laisser de côté certains paquets qui, je le sais, ont dû arriver par défaut. Je crois toujours que cette méthode devrait fonctionner si on construit la bonne liste de méta-paquets.
Cependant, il semble que les miroirs Ubuntu contiennent un fichier "manifeste" contenant tous les packages de l'installation par défaut. Le manifeste pour Ubuntu 12.04.3 est ici:
http://mirror.pnl.gov/releases/precise/ubuntu-12.04.3-desktop-amd64.manifest
Si vous recherchez dans cette page (ou dans la page d’un miroir plus proche de vous):
http://mirror.pnl.gov/releases/precise/
Vous devriez pouvoir trouver le fichier ".manifest" correspondant à la version et à l'architecture que vous utilisez. Pour extraire uniquement les noms de paquets, j'ai fait ceci:
wget -qO - http://mirror.pnl.gov/releases/precise/ubuntu-12.04.3-desktop-amd64.manifest | cut -f1 | sort -u > defaultinstalled.txt
La liste était probablement déjà triée et unique, mais je voulais m'assurer qu'elle était correctement triée pour faciliter la prochaine étape. Je mets ensuite la sortie en defaultinstalled.txt
.
Comment puis-je obtenir la différence entre ces deux listes?
C’est la partie la plus facile car la plupart des systèmes de type Unix disposent de nombreux outils pour le faire. L’ comm
outil est l’une des façons de procéder:
comm -23 currentlyinstalled.txt defaultinstalled.txt
Cela devrait imprimer la liste des lignes qui sont uniques au premier fichier. Ainsi, il devrait imprimer une liste des paquets installés ne figurant pas dans l'installation par défaut.
aptitude search '~i!~M' -F %p
fait pas?