Gentoo Forums
Gentoo Forums
Gentoo Forums
Quick Search: in
[SCRIPT] ménage dans les applis installées
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: Fri Jun 03, 2005 8:43 am    Post subject: [SCRIPT] ménage dans les applis installées Reply with quote

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
View user's profile Send private message
spider312
Veteran
Veteran


Joined: 02 Oct 2004
Posts: 1274
Location: France > Savoie > Chambery

PostPosted: Fri Jun 03, 2005 12:26 pm    Post subject: Reply with quote

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
View user's profile Send private message
Delvin
Guru
Guru


Joined: 07 Jul 2004
Posts: 546

PostPosted: Fri Jun 03, 2005 12:29 pm    Post subject: Reply with quote

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
View user's profile Send private message
Adrien
Advocate
Advocate


Joined: 13 Jul 2004
Posts: 2308
Location: Bretagne

PostPosted: Fri Jun 03, 2005 1:47 pm    Post subject: Reply with quote

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
View user's profile Send private message
zdra
Veteran
Veteran


Joined: 30 Nov 2003
Posts: 1693
Location: Bruxelles, Belgique

PostPosted: Fri Jun 03, 2005 3:23 pm    Post subject: Reply with quote

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
View user's profile Send private message
Bapt
Veteran
Veteran


Joined: 14 Apr 2003
Posts: 1152
Location: Paris

PostPosted: Fri Jun 03, 2005 6:41 pm    Post subject: Reply with quote

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
View user's profile Send private message
Adrien
Advocate
Advocate


Joined: 13 Jul 2004
Posts: 2308
Location: Bretagne

PostPosted: Fri Jun 03, 2005 7:35 pm    Post subject: Reply with quote

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....:P
Back to top
View user's profile Send private message
Delvin
Guru
Guru


Joined: 07 Jul 2004
Posts: 546

PostPosted: Sun Jun 05, 2005 1:45 pm    Post subject: Reply with quote

oui c'etait une question :)
_________________
Ne tirez pas sur les canards !!
Back to top
View user's profile Send private message
blorent
Tux's lil' helper
Tux's lil' helper


Joined: 01 Aug 2004
Posts: 127
Location: Belgium / Louvain-la-Neuve

PostPosted: Sun Jun 05, 2005 1:49 pm    Post subject: Reply with quote

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
View user's profile Send private message
Bapt
Veteran
Veteran


Joined: 14 Apr 2003
Posts: 1152
Location: Paris

PostPosted: Sun Jun 05, 2005 3:47 pm    Post subject: Reply with quote

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
View user's profile Send private message
leptitlutin
n00b
n00b


Joined: 25 Jan 2005
Posts: 41

PostPosted: Sun Jun 05, 2005 3:52 pm    Post subject: Reply with quote

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
View user's profile Send private message
El_Goretto
Moderator
Moderator


Joined: 29 May 2004
Posts: 3169
Location: Paris

PostPosted: Sun Jun 05, 2005 4:14 pm    Post subject: Reply with quote

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
View user's profile Send private message
fb99
l33t
l33t


Joined: 09 Apr 2003
Posts: 998
Location: Le Locle (Suisse,Neuchâtel)

PostPosted: Mon Jun 06, 2005 10:12 am    Post subject: Reply with quote

@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 :wink:
_________________
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
View user's profile Send private message
zdra
Veteran
Veteran


Joined: 30 Nov 2003
Posts: 1693
Location: Bruxelles, Belgique

PostPosted: Mon Jun 06, 2005 10:27 am    Post subject: Reply with quote

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

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
View user's profile Send private message
El_Goretto
Moderator
Moderator


Joined: 29 May 2004
Posts: 3169
Location: Paris

PostPosted: Mon Jun 06, 2005 11:30 am    Post subject: Reply with quote

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

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
View user's profile Send private message
Enlight
Advocate
Advocate


Joined: 28 Oct 2004
Posts: 3519
Location: Alsace (France)

PostPosted: Mon Jun 06, 2005 12:00 pm    Post subject: Reply with quote

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

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
View user's profile Send private message
zdra
Veteran
Veteran


Joined: 30 Nov 2003
Posts: 1693
Location: Bruxelles, Belgique

PostPosted: Mon Jun 06, 2005 12:06 pm    Post subject: Reply with quote

Me semble bien que c'est /var/log/emerge.log
Back to top
View user's profile Send private message
spider312
Veteran
Veteran


Joined: 02 Oct 2004
Posts: 1274
Location: France > Savoie > Chambery

PostPosted: Mon Jun 06, 2005 9:46 pm    Post subject: Reply with quote

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
Code:
for pkg in *;do
par
Code:
for pkg in `ls`;do
mais voila, le script tourne ;)
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