View previous topic :: View next topic |
Author |
Message |
Bapt Veteran
Joined: 14 Apr 2003 Posts: 1152 Location: Paris
|
Posted: Fri Jun 03, 2005 8:43 am Post subject: [SCRIPT] ménage dans les applis installées |
|
|
Salut,
je voulais juste vous faire partager un petit script ZSH fait rapidement pour lister tous les packages installés dont aucun autre ne dépend, afin de pouvoir faire du ménage :
Code: | #!/bin/zsh
cd /var/db/pkg
for cat in *;do
cd /var/db/pkg/${cat}
echo "------------------------------------------------ $cat"
for pkg in *;do
DEPS=`equery depends ${${${pkg%/}%-r*}%-[0-9]*}`
if [ ${#DEPS} -eq 0 ];then
echo $pkg
fi
done
done
|
Attention ce script est dépendant de la qualité de la recherche des dépendance de equery, de plus, il est un peu long...
A utilisé avec beaucoup de précaution.
Une fois les packages de trop supprimés le ménage fait un coup de :
Code: | emerge -pv depclean |
pour virer les dépendances de ces packages
puis rebelote.
Il doit être facilement adaptable sous bash (pet être qu'il marche tel quel d'ailleur) ou tout autre shell |
|
Back to top |
|
|
spider312 Veteran
Joined: 02 Oct 2004 Posts: 1274 Location: France > Savoie > Chambery
|
Posted: Fri Jun 03, 2005 12:26 pm Post subject: |
|
|
Merci
ça a l'air pas mal en tout cas
par contre, c'est surement pas grave mais ma 1e execution s'est finie par Code: | ./menage:6: no matches found: * | (menage est le nom que j'ai donné au script)
Ah, en fait je me demande si il plante pas à ce moment, ce qui expliquerais le peu de packages que j'ai ^^ il s'arrete sur app-xemacs
Mais c'est bizare, y'a pleins de trucs qui devraient y être et n'y sont pas, je suis surpris du peu de packages qu'il y a, il n'y a presque aucun soft graphique par exemple
P.S. après le emerge depclean (et même si vous ne le faites pas) un emerge -uD world est plus que conseillé
Et puis je suppose que c'est un bug de equery avec les packages dans system, mais ton script m'a conseillé de virer plusieurs trucs que emerge -uD world m'a réinstallé (et même pas que dans system remarque :/ enfin j'ai verifié tous ces paquets, equery ne leur attribue aucune dépendance, p-e une histoire de useflags ...)
Enfin tout ça ne provient pas de ton script, qui suis "bêtement" ce que lui dit equery, mais c'est dommage quand même
Last edited by spider312 on Fri Jun 03, 2005 1:41 pm; edited 5 times in total |
|
Back to top |
|
|
Delvin Guru
Joined: 07 Jul 2004 Posts: 546
|
Posted: Fri Jun 03, 2005 12:29 pm Post subject: |
|
|
ce script fonctionnerais avec bash si on modifie la premiere ligne en #!/bin/bash ?
ca peut etre sympa comme petit truc ca _________________ Ne tirez pas sur les canards !! |
|
Back to top |
|
|
Adrien Advocate
Joined: 13 Jul 2004 Posts: 2308 Location: Bretagne
|
Posted: Fri Jun 03, 2005 1:47 pm Post subject: |
|
|
Delvin wrote: | ce script fonctionnerais avec bash si on modifie la premiere ligne en #!/bin/bash ?
ca peut etre sympa comme petit truc ca |
+ 1 merci baptux!! |
|
Back to top |
|
|
zdra Veteran
Joined: 30 Nov 2003 Posts: 1693 Location: Bruxelles, Belgique
|
Posted: Fri Jun 03, 2005 3:23 pm Post subject: |
|
|
Scout m'avait donné un ptit script:
Code: |
#!/bin/bash
rm -f /tmp/fifo1 /tmp/fifo2
mkfifo /tmp/fifo1
equery -q list | awk '{print $1}' | sort > /tmp/fifo1 &
mkfifo /tmp/fifo2
emerge -pe world | egrep -o '].*$' | awk '{print $2}' | sort > /tmp/fifo2 &
echo "`comm -3 /tmp/fifo1 /tmp/fifo2`"
rm /tmp/fifo1 /tmp/fifo2
|
Il est bien simpa, le principe est simple: il prend la liste des paquets installé et la compare avec la liste des paquets minimaux qu'il faut pour respecter le world (emerge -ep world)... Donc les paquets affiché peuvent être supprimé
EDIT: c'est tres violent comme méthode, supprimer ces paquets peuvent rendre le systeme largement inutilisable. Par exemple ça m'a viré une ancienne version de libstdc++ mais python était linké avec, et sans python plus d'emerge... suffisait de recompiler python pour qu'il se link avec la nouvelle version de la lib... donc faire attention
Sauvez le scipt dans deepclean.sh par exemple:
Code: |
emerge sync
emerge -uDNav world
emerge -Ca `./deeclean`
revdep-rebuild
emerge -uDNav world
|
|
|
Back to top |
|
|
Bapt Veteran
Joined: 14 Apr 2003 Posts: 1152 Location: Paris
|
Posted: Fri Jun 03, 2005 6:41 pm Post subject: |
|
|
Delvin wrote: | ce script fonctionnerais avec bash si on modifie la premiere ligne en #!/bin/bash ?
ca peut etre sympa comme petit truc ca |
Je ne pensais pas à cause des ${${.../}%} mais si tu le dit |
|
Back to top |
|
|
Adrien Advocate
Joined: 13 Jul 2004 Posts: 2308 Location: Bretagne
|
Posted: Fri Jun 03, 2005 7:35 pm Post subject: |
|
|
baptux wrote: | Delvin wrote: | ce script fonctionnerais avec bash si on modifie la premiere ligne en #!/bin/bash ?
ca peut etre sympa comme petit truc ca |
Je ne pensais pas à cause des ${${.../}%} mais si tu le dit |
En fait il posait la question je crois.... |
|
Back to top |
|
|
Delvin Guru
Joined: 07 Jul 2004 Posts: 546
|
Posted: Sun Jun 05, 2005 1:45 pm Post subject: |
|
|
oui c'etait une question _________________ Ne tirez pas sur les canards !! |
|
Back to top |
|
|
blorent Tux's lil' helper
Joined: 01 Aug 2004 Posts: 127 Location: Belgium / Louvain-la-Neuve
|
Posted: Sun Jun 05, 2005 1:49 pm Post subject: |
|
|
zdra wrote: | Scout m'avait donné un ptit script:
Code: |
#!/bin/bash
rm -f /tmp/fifo1 /tmp/fifo2
mkfifo /tmp/fifo1
equery -q list | awk '{print $1}' | sort > /tmp/fifo1 &
mkfifo /tmp/fifo2
emerge -pe world | egrep -o '].*$' | awk '{print $2}' | sort > /tmp/fifo2 &
echo "`comm -3 /tmp/fifo1 /tmp/fifo2`"
rm /tmp/fifo1 /tmp/fifo2
|
Il est bien simpa, le principe est simple: il prend la liste des paquets installé et la compare avec la liste des paquets minimaux qu'il faut pour respecter le world (emerge -ep world)... Donc les paquets affiché peuvent être supprimé
EDIT: c'est tres violent comme méthode, supprimer ces paquets peuvent rendre le systeme largement inutilisable. Par exemple ça m'a viré une ancienne version de libstdc++ mais python était linké avec, et sans python plus d'emerge... suffisait de recompiler python pour qu'il se link avec la nouvelle version de la lib... donc faire attention
Sauvez le scipt dans deepclean.sh par exemple:
Code: |
emerge sync
emerge -uDNav world
emerge -Ca `./deeclean`
revdep-rebuild
emerge -uDNav world
|
|
C'est peut-être un rien boulet mais j'ai pas réussi à utiliser ton script zdra...
J'ai créé le fichier "deepclean.sh" dans mon home, je m'y suis mis, j'ai lancé "emerge -Ca `./deepclean`" mais j'ai juste obtenu une erreur :
Code: | -bash: ./deepclean: No such file or directory |
Je suis pas encore très familier avec les scripts donc c'est surement une bêtise mais je vois pas trop là... _________________ Ceci est un bloc de texte qui peut être ajouté aux messages que vous postez. |
|
Back to top |
|
|
Bapt Veteran
Joined: 14 Apr 2003 Posts: 1152 Location: Paris
|
Posted: Sun Jun 05, 2005 3:47 pm Post subject: |
|
|
blorent wrote: |
J'ai créé le fichier "deepclean.sh" dans mon home, je m'y suis mis, j'ai lancé "emerge -Ca `./deepclean`" mais j'ai juste obtenu une erreur :
Code: | -bash: ./deepclean: No such file or directory |
Je suis pas encore très familier avec les scripts donc c'est surement une bêtise mais je vois pas trop là... |
SI tu as créer un fichier deepclean.sh il faut le rendre executable pui l'appeler avec son nom : deepclean.sh
donc
Code: | emerge -Ca `./deepclean.sh` |
|
|
Back to top |
|
|
leptitlutin n00b
Joined: 25 Jan 2005 Posts: 41
|
Posted: Sun Jun 05, 2005 3:52 pm Post subject: |
|
|
baptux as tu fait chmod a+x depclean.sh
./depclean.sh ?
et donc la commande emerge -Ca `./deeclean` deviendra emerge -Ca `./deepclean.sh` |
|
Back to top |
|
|
El_Goretto Moderator
Joined: 29 May 2004 Posts: 3169 Location: Paris
|
Posted: Sun Jun 05, 2005 4:14 pm Post subject: |
|
|
zdra wrote: |
EDIT: c'est tres violent comme méthode, supprimer ces paquets peuvent rendre le systeme largement inutilisable. Par exemple ça m'a viré une ancienne version de libstdc++ mais python était linké avec, et sans python plus d'emerge... suffisait de recompiler python pour qu'il se link avec la nouvelle version de la lib... donc faire attention |
Ca m'est arrivé lors du nettoyage "à la main" de libs qui s'installent slots apres slots.
Du coup, à priori si on tente un emerge -e world avant (emprytree), et dans la foulée un nettoyage comme avec le script, ça devrait passer, non? |
|
Back to top |
|
|
fb99 l33t
Joined: 09 Apr 2003 Posts: 998 Location: Le Locle (Suisse,Neuchâtel)
|
Posted: Mon Jun 06, 2005 10:12 am Post subject: |
|
|
@zdra: je me rappelle de ce script mais un petit conseil faire un petit regenworld (histoire d'avoir world à jour) juste avant on ne sait jamais _________________ L'ami aime en tout temps, et dans le malheur il se montre un frère ( Prov. 17,17 )
L'insensé même, quand il se tait, passe pour sage ( Prov. 17;28a ) |
|
Back to top |
|
|
zdra Veteran
Joined: 30 Nov 2003 Posts: 1693 Location: Bruxelles, Belgique
|
Posted: Mon Jun 06, 2005 10:27 am Post subject: |
|
|
Oui c'est une idée aussi
Mais pour moi ça marche plus car j'ai eu la mauvaise idée il y a qq temps de faire des coup de rm dans mes logs qui devenaient volumineux... donc j'ai remis les logs de emerge à zero donc regenworld ne marche plus pour moi
El_Goretto > Oui un "emerge -e" peut aider, mais ça prend du temps... c'est plus rapide de se débrouiller avec un revdep-rebuild apres coup... il suffi de croiser les doigts pour que les outils de base de portage marche encore, sinon faut bidouiller a la main en reprennant les libs dans un stage3 par exemple (ce que j'ai fais pour pouvoir recompiler python) |
|
Back to top |
|
|
El_Goretto Moderator
Joined: 29 May 2004 Posts: 3169 Location: Paris
|
Posted: Mon Jun 06, 2005 11:30 am Post subject: |
|
|
zdra wrote: | Oui c'est une idée aussi
Mais pour moi ça marche plus car j'ai eu la mauvaise idée il y a qq temps de faire des coup de rm dans mes logs qui devenaient volumineux... donc j'ai remis les logs de emerge à zero donc regenworld ne marche plus pour moi |
Euh, de quels logs s'agit-il pour regenworld, et où est-il? Si c'est emerge.log, je sens que je vais me sentir stupide dans pas longtemps |
|
Back to top |
|
|
Enlight Advocate
Joined: 28 Oct 2004 Posts: 3519 Location: Alsace (France)
|
Posted: Mon Jun 06, 2005 12:00 pm Post subject: |
|
|
El_Goretto wrote: | zdra wrote: | Oui c'est une idée aussi
Mais pour moi ça marche plus car j'ai eu la mauvaise idée il y a qq temps de faire des coup de rm dans mes logs qui devenaient volumineux... donc j'ai remis les logs de emerge à zero donc regenworld ne marche plus pour moi |
Euh, de quels logs s'agit-il pour regenworld, et où est-il? Si c'est emerge.log, je sens que je vais me sentir stupide dans pas longtemps |
je sais pas si c'est propre à mon install (je connais pas le path par defaut et j'ai spécifié un PORT_LOGDIR) mais j'ai /var/log/portage |
|
Back to top |
|
|
zdra Veteran
Joined: 30 Nov 2003 Posts: 1693 Location: Bruxelles, Belgique
|
Posted: Mon Jun 06, 2005 12:06 pm Post subject: |
|
|
Me semble bien que c'est /var/log/emerge.log |
|
Back to top |
|
|
spider312 Veteran
Joined: 02 Oct 2004 Posts: 1274 Location: France > Savoie > Chambery
|
Posted: Mon Jun 06, 2005 9:46 pm Post subject: |
|
|
Si jamais des personnes avaient le même problème que moi, il est à priori résolu, je ne sais pas si c'est l'emerge sync ou le remplacement de la ligne 6 par mais voila, le script tourne |
|
Back to top |
|
|
|