Connaître les paquets utilisés : Différence entre versions
(→Méthodes) |
(→Méthode B) |
||
(11 révisions intermédiaires par le même utilisateur non affichées) | |||
Ligne 7 : | Ligne 7 : | ||
Avec un système «linux-like», une ligne de commande peut suffire... | 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 | + | |
+ | ps aux | awk '{print $11}' | grep ^/usr | sort | uniq | xargs dpkg -S | awk -F: '{print $1}' | sort | xargs dpkg -l | ||
Écriture «décomposée» : | Écriture «décomposée» : | ||
Ligne 40 : | Ligne 51 : | ||
− | + | === 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 == | == 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 !!