Connaître les paquets utilisés : Différence entre versions

De Asso Val Libre
Aller à : navigation, rechercher
(Méthode B)
(Méthode B)
Ligne 61 : Ligne 61 :
 
Plus exhaustive... avec globalement le même principe...
 
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
 
   lsof | grep /usr | awk '{print $10}' | sort | uniq | xargs dpkg -S | awk -F : '{print $1}' | sort | uniq
  

Version du 23 avril 2019 à 19:05


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

Conclusion

 ATTENTION ! À ne pas scier la branche sur laquelle, ou retirer le tapis sur lequel, repose votre machine ou votre serveur !!