Connaître les paquets utilisés

De Asso Val Libre
Révision de 23 avril 2019 à 19:11 par Admin (discussion | contributions) (Méthode B)

(diff) ← Version précédente | Voir la version actuelle (diff) | Version suivante → (diff)
Aller à : navigation, rechercher


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 !!