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?http://releases.ubuntu.com/releases/trusty/ubuntu-14.04-desktop-amd64.manifest
le supplément| sed "s/ *$//"
mais toujours pas de dés.apt-mark showmanual | sort -u
, comme indiqué dans d'autres réponses. Plus simple, et ne repose pas suraptitude
ce qui n’est pas installé par défaut.Vous pouvez utiliser l'une ou l'autre de ces deux lignes. Les deux donnent exactement le même résultat sur ma machine et sont plus précis que toutes les solutions proposées jusqu'à présent (juillet 2014) dans cette question. Ils sont une combinaison des deux réponses (1) et (2) . Notez que j'ai initialement posté cette réponse ici .
Utilisant
apt-mark
:Utilisant
aptitude
:Très peu de paquets restent encore entre les mailles du filet, bien que je soupçonne que ceux - ci sont réellement installés par l'utilisateur, soit juste après l'installation via la configuration de la localisation de la langue ou, par exemple, via l'installateur de codecs Totem. De plus, les versions de linux-header semblent également s'accumuler, même si je n'ai installé que le méta-paquet non spécifique à la version. Exemples:
Comment ça marche
sed
bandes supplémentaires éliminent les espaces blancs restants à la fin de la ligne.Les autres possibilités ne fonctionnent pas aussi bien:
ubuntu-14.04-desktop-amd64.manifest
fichier ( ici pour Ubuntu 14.04) au lieu de/var/log/installer/initial-status.gz
. Plus de paquets sont montrés comme installés manuellement même s'ils ne le sont pas.apt-mark showauto
au lieu de/var/log/installer/initial-status.gz
.apt-mark
par exemple, n'inclut pas le paquet xserver-xorg, contrairement à l'autre fichier.Les deux listes plus de paquets que la solution ci-dessus.
la source
Selon
man apt-mark
:la source
showmanual
montre des choses commexserver-xorg-video-vesa
, je jure que je n’ai pas installé manuellement.Voici un exemple de sortie de
cat /var/log/apt/history.log
:En ce qui concerne votre question, filtrez le contenu avec grep (
cat /var/log/apt/history.log | grep Commandline
).Notez que ces fichiers sont soumis à une rotation, alors recherchez-en d'autres pour ne rien manquer:
NOTE :
Commandline
, l’grep
astuce ne marche donc pas avec eux.la source
aptitude
et d'autres gestionnaires de paquetages. Si vos journaux ont tourné, alors vous n'avez pas de chance.Je suis tombé sur cette belle oneliner pendant que je cherchais cette requête
La doublure est
Ce filtre filtre les paquets installés par le système en utilisant les journaux de
/var/log/installer/initial-status.gz
Je posterai le lien vers le fil d’origine lorsque je l’aurai trouvé, car cet élément n’est pas le mien et j’ai l’impression de ne pas me rappeler où je l’ai vu.
la source
Vous voudriez jeter un oeil à cet article .
À la fin de l'article, vous trouverez un script python qui devrait faire ce que vous voulez.
C'était écrit pour (k) ubuntu . mais devrait aussi fonctionner pour Ubuntu .
la source
Ci - dessous un ajout à la réponse de Steven D' .
La ligne suivante semble tronquer les noms de package à 32 caractères:
Cela semble fonctionner:
voir cette réponse
la source
Check-out
/var/log/apt/term.log
la source
Vous pouvez également consulter le fichier
/var/lib/apt/extended_states
.Ceci est utile si vous voulez savoir ce qui a été installé sur une ancienne partition.
la source
Un grand merci et félicitations à ceux qui ont créé ce joyau de script !!!
Je voulais ajouter 2 ¢ et j'ai ajouté la date d'installation déduite de $ info.
Je ne maîtrisais pas les détails de la mise à jour ou non des fichiers $ info et quand, mais cela fonctionne dans la pratique.
Mon script répertorie les dernières mises à jour des packages non dépendants ajoutés après l'installation.
En lui donnant un contrôle périodique, je voyais ce que j'aurais enregistré manuellement sans un oubli.
C’est-à-dire des lots de paquets installés pour la même raison. Malheureusement, les mises à jour rompent cet ordre.
Après une mise à niveau du système, j'ai eu une liste de mes packages ajoutés que la mise à jour n'a pas mis à jour, suivis de ceux qu'elle a faits.
Soigné! Prendre plaisir.
la source