Gentoo Forums
Gentoo Forums
Gentoo Forums
Quick Search: in
[SCRIPT] gentoocutleaves nettoyage de printemps
View unanswered posts
View posts from last 24 hours

 
Reply to topic    Gentoo Forums Forum Index French
View previous topic :: View next topic  
Author Message
Bapt
Veteran
Veteran


Joined: 14 Apr 2003
Posts: 1152
Location: Paris

PostPosted: Mon Jun 05, 2006 9:51 am    Post subject: [SCRIPT] gentoocutleaves nettoyage de printemps Reply with quote

Voici un petit script (crade) pour obtenir les même fonctionnalité sous gentoo que "pkgcut_leaves -l" sous FreeBSD c'est à dire :
Lister les packages dont aucun autre ne dépend indépendemment de world, prennant en compte les world, et les packages "system".
L'intérêt : visualiser les paquets "finaux" donc ceux que l'on utilise et pouvoir supprimer ceux qui sont inutiles (lib dont plus personne ne dépend, etc.". Ca nécessite portage-utils.

Il n'est pas parfait, néanmoins il m'a permis pas mal de nettoyage :
Code:

#!/bin/sh
base="$(grep -v ^# /usr/portage/profiles/base/packages | grep -v ^$ | awk -F/ '{ print $2 }' | xargs echo)"
baselinux="$(grep -v ^# /etc/make.profile/../../packages | grep -v ^$ | awk -F/ '{ print $2 }' | xargs echo)"
basearch="$(grep -v ^# /etc/make.profile/../packages | grep -v ^$ | awk -F/ '{ print $2 }' | xargs echo)"
base="$base $baselinux $basearch"
for pkg in $(qlist -IC);do
  if [ $(qdepends -q -C -Q $pkg -a | grep -v DEPEND | wc -l) -eq 0 ];then
    pkg_name=$(echo $pkg | awk -F/ '{ print $2 }')
    virt=""
    virt=$(grep virtual /var/db/pkg/$pkg*/PROVIDE 2>/dev/null| awk -F/ '{ print $2 }')
    virtual_found=0
    if [ "$virt" != "" ];then
      if [ $(qdepends -q -C -Q virtual/$virt -a | grep -v DEPEND | wc -l) -gt 0 ];then
      #if [ $(equery -q depends $virt | wc -l) -gt 0 ];then
        virtual_found=1
      fi
      pkg_name=$virt
    fi
    if [ $virtual_found -ne 1 ];then
      found=0
      for base_pkg in $base;do
        if [ "$pkg_name" = "$base_pkg" ];then
          found=1
        fi
      done
      if [ $found -eq 0 ];then
        echo $pkg
      fi
    fi
  fi
done

Le code peut très largement être optimisé :)

Pour l'utiliser :
#./gentoocutleaves
C'est tout
Back to top
View user's profile Send private message
bouleetbil
Guru
Guru


Joined: 06 Jul 2004
Posts: 456
Location: Montpellier

PostPosted: Mon Jun 05, 2006 8:53 pm    Post subject: Reply with quote

Bonsoir,
Je viens d'essayer ton script il est sympa et très utile, mais il manque peut-être la version :
Code:

sys-kernel/suspend2-sources
sys-kernel/suspend2-sources
sys-kernel/suspend2-sources
sys-kernel/suspend2-sources
sys-kernel/suspend2-sources
sys-kernel/suspend2-sources

_________________
L'homme n'est pas fait pour travailler ça le fatigue.
LiveCD Gentoo : http://www.frogdev.info
Gentoo/Freebsd : http://www.frogdev.info/gentoo_freebsd.php
Back to top
View user's profile Send private message
Bapt
Veteran
Veteran


Joined: 14 Apr 2003
Posts: 1152
Location: Paris

PostPosted: Mon Jun 05, 2006 10:06 pm    Post subject: Reply with quote

C'est fait, en fait je ne fait pas apparaître la version , mais la version du slot quand le package peut avoir plusieurs slots :
Code:
#!/bin/sh
base="$(grep -v ^# /usr/portage/profiles/base/packages | grep -v ^$ | awk -F/ '{ print $2 }' | xargs echo)"
baselinux="$(grep -v ^# /etc/make.profile/../../packages | grep -v ^$ | awk -F/ '{ print $2 }' | xargs echo)"
basearch="$(grep -v ^# /etc/make.profile/../packages | grep -v ^$ | awk -F/ '{ print $2 }' | xargs echo)"
base="$base $baselinux $basearch"
qlist -ICS | while read pkgname pkgversion;do
  if [ $(qdepends -q -C -Q $pkgname -a | grep -v DEPEND | wc -l) -eq 0 ];then
    pkg_name=$(echo $pkgname | awk -F/ '{ print $2 }')
    virt=""
    virt=$(grep virtual /var/db/pkg/$pkgname*/PROVIDE 2>/dev/null| awk -F/ '{ print $2 }')
    virtual_found=0
    if [ "$virt" != "" ];then
      if [ $(qdepends -q -C -Q virtual/$virt -a | grep -v DEPEND | wc -l) -gt 0 ];then
      #if [ $(equery -q depends $virt | wc -l) -gt 0 ];then
        virtual_found=1
      fi
      pkg_name=$virt
    fi
    if [ $virtual_found -ne 1 ];then
      found=0
      for base_pkg in $base;do
        if [ "$pkg_name" = "$base_pkg" ];then
          found=1
        fi
      done
      if [ $found -eq 0 ];then
        if [ "$pkgversion" = "0" ];then
          echo $pkgname
        else
          echo $pkgname $pkgversion
        fi
      fi
    fi
  fi
done
Back to top
View user's profile Send private message
bouleetbil
Guru
Guru


Joined: 06 Jul 2004
Posts: 456
Location: Montpellier

PostPosted: Tue Jun 06, 2006 5:33 am    Post subject: Reply with quote

Salut,
Je viens d'essayer la dernière version, merci cela fonctionne bien et du coup j'ai supprimé des paquets obsolètes :lol:
_________________
L'homme n'est pas fait pour travailler ça le fatigue.
LiveCD Gentoo : http://www.frogdev.info
Gentoo/Freebsd : http://www.frogdev.info/gentoo_freebsd.php
Back to top
View user's profile Send private message
truc
Advocate
Advocate


Joined: 25 Jul 2005
Posts: 3199

PostPosted: Tue Jun 13, 2006 9:44 pm    Post subject: Reply with quote

euh, quelqu'un peut m'expliquer ça /etc/make.profile/../../packages comprends pas, ça nous donne /packages :O pourtant y'en a pas de tel fichiers et ça marche :S moi pas comprendre !
Back to top
View user's profile Send private message
Bapt
Veteran
Veteran


Joined: 14 Apr 2003
Posts: 1152
Location: Paris

PostPosted: Wed Jun 14, 2006 8:50 am    Post subject: Reply with quote

truc wrote:
euh, quelqu'un peut m'expliquer ça /etc/make.profile/../../packages comprends pas, ça nous donne /packages :O pourtant y'en a pas de tel fichiers et ça marche :S moi pas comprendre !

Sauf que make.profile est un lien symbolique vers /usr/portage/profile/...../2006.0 par exemple.

J'utilise make.profile comme ça je suis sûr d'arriver à l'arbo profile même si l'utilisateur change l'emplacement pour portage dans un autre rep que /usr/portage.
Back to top
View user's profile Send private message
truc
Advocate
Advocate


Joined: 25 Jul 2005
Posts: 3199

PostPosted: Wed Jun 14, 2006 9:00 am    Post subject: Reply with quote

arf, ok merci, j'avais pas pensé à ça :roll:
Back to top
View user's profile Send private message
PabOu
Veteran
Veteran


Joined: 11 Feb 2004
Posts: 1088
Location: Hélécine - Belgium

PostPosted: Thu Jul 06, 2006 3:12 pm    Post subject: Re: [SCRIPT] gentoocutleaves nettoyage de printemps Reply with quote

baptux wrote:
Voici un petit script (crade) pour obtenir les même fonctionnalité sous gentoo que "pkgcut_leaves -l" sous FreeBSD c'est à dire :
Lister les packages dont aucun autre ne dépend indépendemment de world, prennant en compte les world, et les packages "system".
L'intérêt : visualiser les paquets "finaux" donc ceux que l'on utilise et pouvoir supprimer ceux qui sont inutiles (lib dont plus personne ne dépend, etc.".


Si j'ai bien compris, ca liste les ebuilds que tu as installé, et seulement ceux qui n'ont aucune dépendance inverse ?
_________________
Mangez du poulet !
Back to top
View user's profile Send private message
Magic Banana
Veteran
Veteran


Joined: 13 Dec 2005
Posts: 1912
Location: Belo Horizonte, Minas Gerais, Brasil

PostPosted: Thu Jul 06, 2006 11:42 pm    Post subject: Reply with quote

Il me semble au contraire que ce script liste les packages n'ayant pas de dépendance.
Back to top
View user's profile Send private message
Bapt
Veteran
Veteran


Joined: 14 Apr 2003
Posts: 1152
Location: Paris

PostPosted: Fri Jul 07, 2006 12:52 pm    Post subject: Reply with quote

Magic Banana wrote:
Il me semble au contraire que ce script liste les packages n'ayant pas de dépendance.


Non c'est PabOu qui a raison ça liste les paquets dont aucun autre ne dépend, ainsi on ne doit voir dans la liste que les paquets dont on sait pourquoi ils sont installés, les autres peuvent être désinstallés (avec précaution tout de même).
Back to top
View user's profile Send private message
novazur
Guru
Guru


Joined: 19 Mar 2005
Posts: 461
Location: Martinique

PostPosted: Sun Jul 23, 2006 4:14 am    Post subject: Reply with quote

Je ne voudrais pas dire une bêtise, mais théoriquement, sur un système des plus propres, ça devrait correspondre au fichier world non ?
Back to top
View user's profile Send private message
BuBuaBu
l33t
l33t


Joined: 09 Jul 2005
Posts: 914
Location: France

PostPosted: Sun Jul 23, 2006 8:00 am    Post subject: Reply with quote

novazur wrote:
Je ne voudrais pas dire une bêtise, mais théoriquement, sur un système des plus propres, ça devrait correspondre au fichier world non ?


il peu arriver que l'on install un truc qui devient une dépendance lors d'un autre emerge.
Back to top
View user's profile Send private message
novazur
Guru
Guru


Joined: 19 Mar 2005
Posts: 461
Location: Martinique

PostPosted: Sun Jul 23, 2006 3:24 pm    Post subject: Reply with quote

BuBuaBu wrote:
novazur wrote:
Je ne voudrais pas dire une bêtise, mais théoriquement, sur un système des plus propres, ça devrait correspondre au fichier world non ?


il peu arriver que l'on install un truc qui devient une dépendance lors d'un autre emerge.


C'est vrai, c'est pour ça que je parlais de système "propre".
Back to top
View user's profile Send private message
Display posts from previous:   
Reply to topic    Gentoo Forums Forum Index French All times are GMT
Page 1 of 1

 
Jump to:  
You cannot post new topics in this forum
You cannot reply to topics in this forum
You cannot edit your posts in this forum
You cannot delete your posts in this forum
You cannot vote in polls in this forum