Connaître les paquets utilisés : Différence entre versions
(→Méthode B) |
(→Méthode B) |
||
(3 révisions intermédiaires par le même utilisateur non affichées) | |||
Ligne 63 : | Ligne 63 : | ||
(!)sur une seule ligne... | (!)sur une seule ligne... | ||
lsof | grep /usr | awk '{print $10}' | sort | uniq | xargs dpkg -S | awk -F : '{print $1}' | sort | uniq | lsof | grep /usr | awk '{print $10}' | sort | uniq | xargs dpkg -S | awk -F : '{print $1}' | sort | uniq | ||
+ | |||
+ | Décomposition de la commande : le | ("pipe/tube") permet d'enchaîner les différentes étapes intermédiaires) | ||
lsof # liste des fichiersouvert | lsof # liste des fichiersouvert | ||
Ligne 71 : | Ligne 73 : | ||
| awk -F : '{print $1}' # le nom du paquet est le premier champs (en considérant le séparateur ':') | | awk -F : '{print $1}' # le nom du paquet est le premier champs (en considérant le séparateur ':') | ||
| sort | uniq # Nettoyage doublons | | sort | uniq # Nettoyage doublons | ||
+ | |||
+ | Pour obtenir simplement le nombre de paquets | ||
+ | | wc -l | ||
+ | |||
+ | Pour mesurer le temps d'exécution (ça peut être long), simplement précéder la commande par times | ||
+ | |||
+ | times lsof ... | ||
== Conclusion == | == Conclusion == |
Version actuelle en date du 23 avril 2019 à 19:11
Objectif
Sur une machine opérationnelle, qui fonctionne normalement, identifier les logiciels/«paquets» nécessaires justement à son bon fonctionnement et donc a contrario, identifier ceux qui ne sont pas nécessaires et qui pourraient donc être nettoyés.
Avec un système «linux-like», une ligne de commande peut suffire...
Il faut ensuite identifier la fonction et l'utilité de chaque paquet ainsi listé et décider de garder ou supprimer le paquet/logiciel concerné.
Par exemple, sur un serveur sans utilité graphique, on peut retirer les paquets xserver-* ou encore wmaker, lightdm, ...
Chaque paquet retiré est
- un allégement de la charge système (pas de petites économies)
- une diminution des risques en terme de sécurité
- une simplification pour les prochaines mises à jour éventuelles (moins de logiciels, d'interactions à considérer)
Méthode A
ps aux | awk '{print $11}' | grep ^/usr | sort | uniq | xargs dpkg -S | awk -F: '{print $1}' | sort | xargs dpkg -l
Écriture «décomposée» :
ps aux | awk '{print $11}' | grep ^/usr | sort | uniq | xargs dpkg -S | awk -F: '{print $1}' | sort
e.g. (résultat)
accountsservice acpid apache2-bin at at-spi2-core cpufreqd cron . . . wmaker xserver-xorg-core
Remarques
- Le moment de l'exécution de la commande n'est pas anodin.
- Tous les services ou logiciels utiles sur une machine ne sont pas actifs en permanence.
- Il faut donc réaliser plusieurs requêtes, à des moments différents (cron ?? ;-)
Méthode B
Plus exhaustive... avec globalement le même principe...
(!)sur une seule ligne... lsof | grep /usr | awk '{print $10}' | sort | uniq | xargs dpkg -S | awk -F : '{print $1}' | sort | uniq
Décomposition de la commande : le | ("pipe/tube") permet d'enchaîner les différentes étapes intermédiaires)
lsof # liste des fichiersouvert | grep /usr # dont on ne garde que les fichiers /usr/... (système) | awk '{print $10}' # le nom est stocké dans le 10ème champs de l'affichage | sort | uniq # Nettoyage doublons | xargs dpkg -S # à quel paquet appartient ce nom ? | awk -F : '{print $1}' # le nom du paquet est le premier champs (en considérant le séparateur ':') | sort | uniq # Nettoyage doublons
Pour obtenir simplement le nombre de paquets
| wc -l
Pour mesurer le temps d'exécution (ça peut être long), simplement précéder la commande par times
times lsof ...
Conclusion
ATTENTION ! À ne pas scier la branche sur laquelle, ou retirer le tapis sur lequel, repose votre machine ou votre serveur !!