View previous topic :: View next topic |
Author |
Message |
Bapt Veteran
Joined: 14 Apr 2003 Posts: 1152 Location: Paris
|
Posted: Mon Jun 05, 2006 9:51 am Post subject: [SCRIPT] gentoocutleaves nettoyage de printemps |
|
|
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 |
|
|
bouleetbil Guru
Joined: 06 Jul 2004 Posts: 456 Location: Montpellier
|
Posted: Mon Jun 05, 2006 8:53 pm Post subject: |
|
|
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 |
|
|
Bapt Veteran
Joined: 14 Apr 2003 Posts: 1152 Location: Paris
|
Posted: Mon Jun 05, 2006 10:06 pm Post subject: |
|
|
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 |
|
|
bouleetbil Guru
Joined: 06 Jul 2004 Posts: 456 Location: Montpellier
|
Posted: Tue Jun 06, 2006 5:33 am Post subject: |
|
|
Salut,
Je viens d'essayer la dernière version, merci cela fonctionne bien et du coup j'ai supprimé des paquets obsolètes _________________ 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 |
|
|
truc Advocate
Joined: 25 Jul 2005 Posts: 3199
|
Posted: Tue Jun 13, 2006 9:44 pm Post subject: |
|
|
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 |
|
|
Bapt Veteran
Joined: 14 Apr 2003 Posts: 1152 Location: Paris
|
Posted: Wed Jun 14, 2006 8:50 am Post subject: |
|
|
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 |
|
|
truc Advocate
Joined: 25 Jul 2005 Posts: 3199
|
Posted: Wed Jun 14, 2006 9:00 am Post subject: |
|
|
arf, ok merci, j'avais pas pensé à ça |
|
Back to top |
|
|
PabOu Veteran
Joined: 11 Feb 2004 Posts: 1088 Location: Hélécine - Belgium
|
Posted: Thu Jul 06, 2006 3:12 pm Post subject: Re: [SCRIPT] gentoocutleaves nettoyage de printemps |
|
|
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 |
|
|
Magic Banana Veteran
Joined: 13 Dec 2005 Posts: 1912 Location: Belo Horizonte, Minas Gerais, Brasil
|
Posted: Thu Jul 06, 2006 11:42 pm Post subject: |
|
|
Il me semble au contraire que ce script liste les packages n'ayant pas de dépendance. |
|
Back to top |
|
|
Bapt Veteran
Joined: 14 Apr 2003 Posts: 1152 Location: Paris
|
Posted: Fri Jul 07, 2006 12:52 pm Post subject: |
|
|
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 |
|
|
novazur Guru
Joined: 19 Mar 2005 Posts: 461 Location: Martinique
|
Posted: Sun Jul 23, 2006 4:14 am Post subject: |
|
|
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 |
|
|
BuBuaBu l33t
Joined: 09 Jul 2005 Posts: 914 Location: France
|
Posted: Sun Jul 23, 2006 8:00 am Post subject: |
|
|
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 |
|
|
novazur Guru
Joined: 19 Mar 2005 Posts: 461 Location: Martinique
|
Posted: Sun Jul 23, 2006 3:24 pm Post subject: |
|
|
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 |
|
|
|