[HOWTO] Nettoyer les distfiles et les packages avec eclean

Forum dédié aux utilisateurs francophones de Gentoo. Retrouvez aussi Gentoo Linux en français sur le wiki!

Moderators: xaviermiller, El_Goretto

Post Reply
TGL
Bodhisattva
Bodhisattva
Posts: 1978
Joined: Sun Jun 02, 2002 12:13 pm
Location: Rennes, France

[HOWTO] Nettoyer les distfiles et les packages avec eclean

Post by TGL »

Introduction

Je n'apprendrai rien à personne en vous disant que le répertoire /usr/portage/distfiles, où emerge télécharge les sources de vos paquets, à une facheuse tendance à enfler considérablement avec le temps. Même chose pour /usr/portage/packages, où emerge stock les paquets binaires, pour les utilisateurs des FEATURES flags "buildpkg" ou "buildsyspkg". C'est un petit désagrément vieux comme Gentoo...

Seulement voilà, le nettoyage de ses répertoire ne peut pas raisonnablement être fait à coup de "rm -rf", parcequ'il serait dommage d'effacer par exemple les sources du dernier Xorg quand on est susceptible d'en avoir besoin le lendemain pour une nouvelle révision (-rX) de l'ebuild. N'oublions pas que quand on re-télécharge un fichier, on abuse de la bande passante des mirroirs, qui n'est pas gratuite et donc difficile à obtenir pour Gentoo. De même pour les paquets binaires, on peut avoir envie de faire du ménage sans pour autant supprimer celui de sauvegarde de notre GCC, qui peut si bien dépanner parfois.

Pour faire ce ménage de façon plus parcimonieuse, il existe depuis longtemps de nombreux scripts officieux, écrits par des utilisateurs : on en trouve plein ici pour les distfiles, ou encore yacleaner qui s'occupe aussi des paquets binaires, et puis plein d'autres qui trainent ici et là et que j'ai oublié. Mais il n'y en avait jusque alors aucun d'officiel... jusqu'à l'intégration récemment de eclean dans gentoolkit-0.2.1_pre6. C'est celui là que je vais un peu vous présenter, parce que pour l'avoir écrit je le connais bien, et puis parce que c'est le meilleurs d'abord, nah. :P


Installation

Rien de bien compliqué pour l'installation, maintenant que la bête est incluse dans gentoolkit. Si vous êtes en ~arch, vérifiez juste que avez bien gentoolkit-0.2.1_pre7 (la version de la _pre6 ne fonctionnant pas avec portage-2.0.52). Si vous êtes en stable, alors votre gentoolkit doit encore en être à la 0.2.0... N'hésitez pas à passez ce paquet en ~arch, il ne va pas vous manger :

Code: Select all

% echo app-portage/gentoolkit >> /etc/portage/package.keywords
% emerge gentoolkit

À noter qu'à partir de maintenant, je n'ai pas grand chose à ajouter par rapport à «man eclean». Mais bon, je sais que les manpages en anglais, certains les lisent avec d'enthousiasme que les posts du forum francophone, alors allons y quand même...


Invocation, principaux modes de nettoyage

La commande de base de eclean est la suivante :

Code: Select all

% eclean [options globales] <action> [options spécifiques à l'action]
Ici, <action> peut être soit distfiles, soit packages, suivant ce que vous souhaitez nettoyer. On dispose aussi de deux commandes raccourcies : eclean-dist et eclean-pkg, qui positionnent l'action respectivement à distfiles ou packages, et qui prennent en paramètres les options globales ou spécifiques, sans ordre particulier.

Au niveau des options globales, je ne m'étendrai pas bien longtemps sur les plus évidentes, que voici :

Code: Select all

 -C, --nocolor             - désactive l'affichage en couleurs
 -i, --interactive         - demande une confirmation pour les effacements
 -p, --pretend             - affiche ce qui serait fait, mais ne le fait pas
 -q, --quiet               - mode silencieux, n'affiche que les erreurs
 -h, --help                - affiche l'aide d'eclean
 -V, --version             - affiche la version d'eclean
Les autres options globales par contre sont plus intéressantes, parce qu'elles agissent sur les choix que eckean va faire en matière d'effacement, bref elles déterminent ce qu'est cette "parcimonie" du nettoyage.

Voilà déjà comment eclean fonctionne sans option : il regarde l'ensembles des ebuilds disponibles (dans l'arbre et dans vos overlays), dans toutes leurs versions, et protège tout ce qui les concerne. C'est à dire que pour l'action distfiles, si vous avez d'installé xorg-x11-6.8.99.x mais que les les sources du 6.8.3 sont encore là, elles seront protegées. De même pour l'action packages, si vous tournez en gcc-3.4 mais avez encore un binaire de gcc-3.3.5, il sera protégé. Bref, ce mode par défaut est le plus conservateur, puisqu'il suppose que tout ce qui est accessible est susceptible d'être encore installé, et gardera donc aussi des fichiers pour d'éventuels downgrades, ou la réinstallation de paquets qu'on avait précédemment supprimés, etc.

Viens ensuite l'option "--destructive" :

Code: Select all

 -d, --destructive         - conserve le minimum nécéssaire à une réinstallation
Avec cette option, eclean va faire un nettoyage plus agressif, et ne conserver que les fichiers concernés par les ebuilds des paquets installés, dans leur version exacte. Si vous avez xorg-x11-6.8.99-15, seule les sources de cette versions exactement seront préservée. De même, si vous avez plusieurs paquets binaires de GCC, mais que seul le 3.4.4-r1 est installé, alors seul le paquet binaire de cette version sera conservé. Au niveau distfiles donc, on ne conserve que de quoi faire un "emerge -e world", ou encore de quoi voir venir les futures "revision bump" des ebuilds (les version-rX). Et au niveau packages, on garde de quoi réparer ce qu'on pourrait malencontreusement corompre sur notre système, mais pas de quoi retourner d'une version en arrière.

Viens enfin l'option "--package-names", utilisable uniquement en plus de "--destructive" :

Code: Select all

 -n, --package-names       - protège toutes les versions
Avec cette options, le nettoyage sera un peu un intermédiaire entre les deux modes précédents : on va conserver ce qui concerne toutes les versions disponibles des paquets installés, et donc conserver ce qui pourrait par exemple servir à faire un downgrade de paquet (comme pour le mode par défaut), mais on va quand même effacer tout le reste. Donc si vous avez encore les sources du dernier KDE mais que depuis vous l'avez virer et êtes passés à GNOME, elles seront effacées.

À noter que les autres scripts de nettoyage (comme yacleaner) utilisent tous, à ma connaissance, une logique qui correspond au mode le plus déstructif d'eclean ("--destructive" sans l'option "--package-names").


Options d'exclusion

En plus de ces trois principaux modes de fonctionnement, on peut utiliser quelques autres options pour affiner la politique de nettoyage.

En option globale, donc valable autant pour les paquets binaires que pour les distfiles, on dispose de "--time-limit" :

Code: Select all

 -t, --time-limit=<time>   - ne pas effacer les fichiers datant de moins de <time>
   <time> est une durée: "1y" pour "one year" (1 an), "2w" pour "two weeks" (2 semaines), etc.
   Les unités sont : y (years), m (months), w (weeks), d (days) et h (hours).
Bon, pas besoin d'épiloguer là dessus, ça permet d'exclure du nettoyage les fichiers les plus récents. C'est une bonne précaution par exemple pour les gens qui bricolent un peu des ebuilds eux même : on peut facilement avoir dans ses distfiles des sources pour un ebuild qu'on va mettre quelques jours à finir avant de définitivement l'installer, et cette option permettra de les protéger (c'est surtout pertinent pour les gens qui lanceront eclean régulièrement depuis leur crontab).

Pour les distfiles, et uniquement pour eux (donc dans les options spécifiques à l'action distfiles), on dispose aussi de ça :

Code: Select all

 -f, --fetch-restricted   - protège les fichiers "fetch-restricted" (en mode --destructive)
 -s, --size-limit=<size>  - prtège les fichiers d'une taille supérieure à <size>
   <size> est une taille de fichier : "10M" pour "dix megaoctets", "200K" pour
   "deux cent kilooctets", etc.  Les unités sont : G, M, K et B.
Le "-f" permet donc de protéger, malgré un --destructive, les fichiers distfiles qu'on a dû télécharger à la main (comme les JDK de Sun par exemple). Quant au "-s", il permet de protéger les plus gros fichiers distfiles. Disons que ces deux options sont des précautions supplémentaires pour éviter d'effacer par mégarde des fichiers particulièrement galère à re-télécharger.


Voilà, c'est presque fini pour les options. Vous aurez noté qu'il n'existe pas d'option spécifique à l'action packages donc.


Fichiers d'exclusion

Un peu dans le même esprit que les options d'exclusion, les "fichiers d'exclusion" sont deux fichiers de configuration qui permettent aussi d'affiner le travail d'eclean pour des cas particuliers. On va pouvoir explicitement y lister des choses à exclure du nettoyage.

Par défaut, ces fichiers fichiers sont /etc/eclean/distfiles.exclude et /etc/eclean/packages.exclude, respectivement pour les actions distfiles et packages. Mais on peut changer ce chemin avec cette option :

Code: Select all

 -e, --exclude-file=<path> - chemin du fichier d'exclusion 
C'est particulièrement utile si vous voulez temporairement ignorer votre fichier d'exclusion habituel : il suffit de donner /dev/null comme chemin.

Dans ces fichiers, on peut lister des noms de paquets (noms complets avec la catégorie, comme "app-shells/bash" par exemple) : les binaires ou distfiles de ce paquet seront alors protégés, même en --destructive. Les syntaxes avec version, comme ">=app-shells/bash-3" ne sont par contre pas supportées.

On peut aussi lister des noms de catégories ("sys-apps", ou éventuellement "sys-apps/*", mais c'est vraiment juste pour faire joli) : les binaires ou distfiles de tous les paquets de cette catégorie seront alors protégés. Dans ce cas, on peut alors aussi exclure certains paquets particuliers de la catégorie protegée : par exemple, "!sys-apps/portage" supprimera le paquet "sys-apps/portage" de la protection dont jouissent les autres paquets de "sys-apps".

Il faut savoir aussi que :
- les lignes blanches ou celles commençant par un "#" sont ignorées ;
- on ne liste qu'un élément par ligne.

À noter enfin que dans le fichier d'exclusion des distfiles, on peut donner des noms de fichiers sources à protéger, comme "OOo_1.1.4_source.tar.gz".

Personnellement, je trouve cette fonctionnalité utile surtout pour la protection des paquets binaires : on peut lister dans son packages.exclude les catégories des paquets les plus critiques comme sys-apps, sys-devel, etc., pour conserver plus de versions des binaires de ces paquets. On peut même envisager d'y lister tous les paquets de "system", avec une commande dans ce style :

Code: Select all

% emerge -pe system | sed -n -e 's:^\[.*\] ::' -e 's:-[0-9].*::p' >> /etc/eclean/packages.exclude

Exemples d'utilisation

Allez, juste pour clarifier un peu les choses, quelques exemples... (je reprends ceux que j'avais mis dans la page man) :
- Effacer uniquement les distfiles complètement obsolètes, avec confirmation interactive :

Code: Select all

# eclean -i distfiles
- Vérifier quels seraient les paquets binaires complètement obsolètes à effacer, dans un terminal sans couleur :

Code: Select all

# eclean -Cp packages
- Effacer les paquets binaires des logiciels qui ne sont pas installés sur le système :

Code: Select all

# eclean-pkg -d -n
- Effacer tous les distfiles, saufs ceux des paquets installés (dans cette version exacte), ceux qui ont moins d'un mois, ceux qui sont à télécharger manuellement, et ceux qui font plus de 50 Mo :

Code: Select all

# eclean-dist -d -t1m -s50M -f
- Dans une crontab, nettoyer silencieusement les paquets binaires dans le mode le plus conservateur, et ensuite les distfiles en mode destructif mais en protégeant ceux vieux de moins d'une semaine (l'action s'exécutera tous les dimanches à 1H du matin) :

Code: Select all

0 1 * * sun   eclean -C -q packages ; eclean -C -q -d -t1w distfiles

FAQ

Fichtre, mais c'est super lent !
Oui et non, ça dépend...

Pour l'action packages, on sait toujours sur quels paquets travailler, puisque ce sont ceux qui sont dans /usr/portage/packages. Donc là, en général le temps d'exécution devrait être très raisonnable (modulo que l'utilisation des modules python de portage est toujours un peu lourde avant même qu'on ait voulu faire quoi que ce soit. Cf. le temps que "emerge" met à afficher le "These are the packages that I would merge, in order:" la première fois que vous l'utiliser après un reboot tout frais).

Pour l'action distfiles, c'est plus compliqué... Dans le mode le plus conservateur, celui par défaut, on est obligé de lister tous les fichiers sources réferencés dans l'arbre portage. Ça fait des dizaines de milliers d'ebuilds à acceder, et donc oui, c'est très lent (plusieurs minutes). Au contraire, en mode "--destructive", on n'a que quelques centaines d'ebuilds à traiter (ceux installés), et là l'exécution est très largement plus rapide. Quant aux autres options, certaines influent aussi : --package-names ralentit les choses (accès à toutes les versions des paquets installés, au lieu d'une seul en --destructive tout court), mais pas au point du mode par défaut. Par contre --fetch-restricted nous fait à nouveau retomber aux piètres performances du mode par défaut, puisqu'il faut chercher les ebuilds ainsi marqués dans l'ensemble de l'arbre Portage.

Eclean m'a effacé mon helpcontent_33_unix.tgz, alors qu'il sert pour OpenOffice !
Voilà un exemple de fichier qui est utilisé par un ebuild, mais qui n'y est pas référencé dans les fichiers sources nécéssaires (pour ceux qui connaissent pas, c'est le fichier d'aide localisé en français, que l'ebuild d'OOo utilisera si il le trouve). Eclean ne peut pas grand chose contre ça, c'est un défaut de l'ebuild. Par contre, en ajoutant "helpcontent_33_unix.tgz" à /etc/eclean/distfiles.exclude, on contourne ce problème.

Eclean devrait permettre le nettoyage de /var/tmp/portage, ou du PORT_LOGDIR, etc.
Bof bof... Pour ces deux là au moins, je ne vois pas trop l'intérêt de faire ça depuis eclean. N'importe quel one-liner à coup de "find" et "rm", ou encore "tmpreaper" ou "tmpwatch", font plutôt bien l'affaire. Le truc, c'est que je ne veux mettre dans eclean que des choses qui ont effectivement besoin d'accèder à l'API de portage pour être intelligement nettoyées. Enfin bon, si vous avez des arguments, je ne suis pas non plus fermé aux features requests hein...


The end...

Pfiou... bah voilà, v'ai encore verbé :roll:
En espérant que vous trouverez ce programme utile...
Last edited by TGL on Thu Sep 15, 2005 3:02 pm, edited 1 time in total.
User avatar
kopp
Advocate
Advocate
Posts: 2885
Joined: Fri Apr 09, 2004 11:58 am
Location: Grenoble, France
Contact:

Post by kopp »

Ah pas mal cet outil, c'est vrai que parfois ça me faisait mal au coeur quand je nettoyais mon distfiles à coup de gros rm -rf : faudra que j'y pense la prochaine fois...
Bon sinon, une fois de plus, tu te fais de la pub :p Barvo ;) En fait t'as bien raison de le faire :)
TGL
Bodhisattva
Bodhisattva
Posts: 1978
Joined: Sun Jun 02, 2002 12:13 pm
Location: Rennes, France

Post by TGL »

kopp wrote:Bon sinon, une fois de plus, tu te fais de la pub :p
Oui j'avoue... M'enfin bon, quand mes petits bidouillages portent sur les trucs que je juge utiles en tant que gentooiste, c'est normal de vous en faire profiter non ? :roll:
Je garde par contre pour moi ma nouvelle recette révolutionnaire de vi4gr4 bio, ainsi que mon plan fabuleusement juteux pour faire échapper de Suisse les millions de dollars du petit cousin par alliance d'un ex dictateur africain :P
User avatar
titix
Guru
Guru
Posts: 343
Joined: Sat Nov 01, 2003 1:11 pm
Location: Paris, France

Post by titix »

Une fois de plus merci TGL !

Great work guy =)
titix
« La route est longue... mais la voie est libre ! »
User avatar
guilc
Bodhisattva
Bodhisattva
Posts: 3326
Joined: Sat Nov 15, 2003 5:32 pm
Location: Paris - France
Contact:

Post by guilc »

Pas encore tout a fait au point non ?

Code: Select all

# eclean distfiles
 * Building file list for distfiles cleaning...
 * Cleaning distfiles...
 [   9.4 K ] IO-Socket-INET6-2.51.tar.gz
 [  25.1 K ] Net-IP-1.23.tar.gz
 [ 129.1 K ] binutils-2.16.1-patches-1.0.tar.bz2
 [  52.8 K ] coreutils-5.3.0-patches-1.1.tar.bz2
 [  44.7 K ] gcc-3.4.4-patches-1.5.tar.bz2
 [  26.1 K ] gcc-3.4.4-uclibc-patches-1.1.tar.bz2
 [  46.7 K ] iptraf-2.7.0-ipv6-alpha11.diff
 [  20.8 K ] jpeg-6b-patches-1.0.tar.bz2
 [   2.0 K ] libao-patches-1.tar.bz2
 [  25.5 K ] net-tools-1.60-patches-1.0.tar.bz2
 [  29.1 K ] poster.tar.bz2
 [  16.0 K ] samba-3-gentoo-0.3.6.tar.bz2
 [  10.8 K ] xine-ui-patches-7.tar.bz2
 * Total space that has been freed in distfiles directory: 437.9 K
r2d2 20:00 - 1.99 ~
# ./scripts/distfiles-clean.sh -l -a
 * Scanning PKG database ...                                                                                                                                [ ok ]
 * Building currently-used distfiles directory ...                                                                                                          [ ok ]
 * Generating obsolete files list ...                                                                                                                       [ ok ]
653     /usr/portage/distfiles/fluxbox-0.9.13.tar.bz2
392     /usr/portage/distfiles/ktoblzcheck-1.2.tar.gz
757     /usr/portage/distfiles/ktorrent-1.0.tar.gz
1081    /usr/portage/distfiles/libetpan-0.38.tar.gz
380     /usr/portage/distfiles/librsvg-2.11.1.tar.bz2
3147    /usr/portage/distfiles/libxml2-2.6.21.tar.bz2
164     /usr/portage/distfiles/loop-AES-v3.0c.tar.bz2
196     /usr/portage/distfiles/microcode_ctl-1.11.tar.gz
661     /usr/portage/distfiles/ncurses-5.4-20050827-patch.sh.bz2
477     /usr/portage/distfiles/openct-0.6.5.tar.gz
7547    /usr/portage/distfiles/scribus-1.2.2.1.tar.bz2
276     /usr/portage/distfiles/sysfsutils-1.3.0.tar.gz
440     /usr/portage/distfiles/udev-068.tar.bz2
428     /usr/portage/distfiles/udev-069.tar.bz2
16597   total
 * 14/1003 files are obsolete
Do some cleaning [y/n] ? y
Sachant que les ficheir que je supprime après avec distfiles-clean sont aussi obsoletes (y a une version plus récente dans mes distfiles)
Merci de respecter les règles du forum.

Mon site perso : https://www.xwing.info
Mon PORTDIR_OVERLAY : https://gentoo.xwing.info ou layman -a xwing
TGL
Bodhisattva
Bodhisattva
Posts: 1978
Joined: Sun Jun 02, 2002 12:13 pm
Location: Rennes, France

Post by TGL »

guilc wrote:Sachant que les ficheir que je supprime après avec distfiles-clean sont aussi obsoletes (y a une version plus récente dans mes distfiles)
RTFM :twisted:

Par défaut, eclean conservera tous les fichiers encore susceptibles d'être utiliser, donc aussi ceux qui pourraient servir à un downgrade de paquet. Si tu veux le même comportement, plus destructeur, que distfiles-clean.sh, utilise l'option "--destructive":
TGL wrote:À noter que les autres scripts de nettoyage (comme yacleaner) utilisent tous, à ma connaissance, une logique qui correspond au mode le plus déstructif d'eclean ("--destructive" sans l'option "--package-names").
User avatar
guilc
Bodhisattva
Bodhisattva
Posts: 3326
Joined: Sat Nov 15, 2003 5:32 pm
Location: Paris - France
Contact:

Post by guilc »

arf :'(

Mais bon, juste une remarque en passant et de manière plus générale : les outils de gentoolkit sont pratique, mais relativement prise de tete a utiliser (faut bien lire la doc un certains nombre de fois pour arriver a faire ce qu'on veut), contrairement a beaucoup d'outils tiers équivalents...
Enfin, c'est mon avis :)
Merci de respecter les règles du forum.

Mon site perso : https://www.xwing.info
Mon PORTDIR_OVERLAY : https://gentoo.xwing.info ou layman -a xwing
User avatar
sireyessire
Advocate
Advocate
Posts: 2991
Joined: Thu Mar 20, 2003 7:28 pm
Location: back in Paris, France

Post by sireyessire »

super outil, merci TGL
I never think of the future. It comes soon enough.
Albert Einstein

Try simpler first
Shockley
User avatar
anigel
Bodhisattva
Bodhisattva
Posts: 1894
Joined: Mon Apr 14, 2003 9:11 pm
Location: Un petit bled pas loin de Limoges ;-)

Post by anigel »

TGL wrote:RTFM :twisted:
Et voilà, TGL est mûr pour les mailing-listes Debian :lol: !

Oh, la belle bleue :twisted: !

Bon, sinon, rien à redire, surtout que j'ai pas encore tout lu, je suis crevé ce soir, on verra ça demain matin !
Il y a 10 sortes d'individus en ce bas-monde : ceux qui causent binaire, et les autres.
User avatar
yuk159
Veteran
Veteran
Posts: 1803
Joined: Fri Apr 18, 2003 9:02 pm
Location: noumea ,nouvelle-caledonie
Contact:

Post by yuk159 »

Merci M'ssieur TGL, il tombe très bien cet outil :P
The box said: "Requires Windows 98/2000/XP/NT, or better."
So, I installed LINUX!
Instagram
User avatar
titoucha
Advocate
Advocate
Posts: 2374
Joined: Thu Jul 21, 2005 5:08 am
Location: Genève

Post by titoucha »

Bon outil très pratique, merci :D
User avatar
marvin rouge
Veteran
Veteran
Posts: 1422
Joined: Sun Aug 01, 2004 10:28 am
Location: Villa Lumierrante, Zonelibre
Contact:

Re: [HOWTO] Nettoyer les distfiles et les packages avec ecle

Post by marvin rouge »

TGL wrote:Eclean devrait permettre le nettoyage de /var/tmp/portage, ou du PORT_LOGDIR, etc.
Bof bof... Pour ces deux là au moins, je ne vois pas trop l'intérêt de faire ça depuis eclean. N'importe quel one-liner à coup de "find" et "rm", ou encore "tmpreaper" ou "tmpwatch", font plutôt bien l'affaire. Le truc, c'est que je ne veux mettre dans eclean que des choses qui ont effectivement besoin d'accèder à l'API de portage pour être intelligement nettoyées. Enfin bon, si vous avez des arguments, je ne suis pas non plus fermé aux features requests hein...
A priori, j'aimerai bien une option (-l --log-clean) qui supprime les log dans PORT_LOGDIR correspondant aux distfiles ou packages (de versions inférieures ou égales) supprimés par eclean. Si on n'a plus besoin des distfiles ou des packages, on n'a plus besoin non plus des logs. J'ai pas vraiment d'argument percutant pour justifier ce feature. :/

Bon, je dis ça aussi parce que je viens de trouver plus de 200MO de logs dans mon PORT_LOGDIR ... et là, ca va se régler à coups de rm.

Merci pour cet outil bien pratique

+
netfab
Advocate
Advocate
Posts: 2066
Joined: Thu Mar 03, 2005 1:27 pm
Location: 127.0.0.1

Post by netfab »

Salut,
TGL wrote:Viens ensuite l'option "--destructive" :

Code: Select all

 -d, --destructive         - conserve le minimum nécéssaire à une réinstallation
Avec cette option, eclean va faire un nettoyage plus agressif, et ne conserver que les fichiers concernés par les ebuilds des paquets installés, dans leur version exacte.
Je viens d'installer la dernière version instable de gentoolkit, juste pour profiter du man eclean :)
Du coup, si je fais un :
# eclean -p -d packages
* Building file list for packages cleaning...
* Here are binary packages that would be deleted:
[ 81.5 K ] app-portage/gentoolkit-0.2.0-r2
* Total space that would be freed in packages directory: 81.5 K
Pourtant (je ne met pas toute la liste, mais j'ai plein d'exemples) :
$ ls -l /usr/portage/packages/All/

-rw-r--r-- 1 root root 225394 sep 9 13:58 baselayout-1.11.12-r4.tbz2
-rw-r--r-- 1 root root 225943 sep 9 13:58 baselayout-1.11.13-r1.tbz2
-rw-r--r-- 1 root root 227503 sep 9 13:58 baselayout-1.11.13.tbz2

[...]

-rw-r--r-- 1 root root 655773 sep 9 13:57 beep-media-player-0.9.7-r4.tbz2
-rw-r--r-- 1 root root 655510 sep 9 13:57 beep-media-player-0.9.7-r6.tbz2
-rw-r--r-- 1 root root 657660 oct 31 21:33 beep-media-player-0.9.7-r8.tbz2

[...]

-rw-r--r-- 1 root root 805527 sep 9 13:57 control-center-2.10.0.tbz2
-rw-r--r-- 1 root root 811646 sep 9 13:57 control-center-2.10.1-r1.tbz2
-rw-r--r-- 1 root root 754900 sep 9 13:57 control-center-2.10.2.tbz2

[...]

-rw-r--r-- 1 root root 718649 sep 9 13:58 metacity-2.10.0.tbz2
-rw-r--r-- 1 root root 731389 sep 9 13:58 metacity-2.10.1.tbz2
-rw-r--r-- 1 root root 704540 sep 9 13:58 metacity-2.10.2.tbz2
-rw-r--r-- 1 root root 707206 sep 9 13:58 metacity-2.10.3.tbz2

[...]

-rw-r--r-- 1 root root 18033127 sep 9 13:59 mozilla-1.7.10-r1.tbz2
-rw-r--r-- 1 root root 18032514 sep 9 13:59 mozilla-1.7.11.tbz2
-rw-r--r-- 1 root root 18295489 oct 15 11:37 mozilla-1.7.12-r2.tbz2
-rw-r--r-- 1 root root 10112393 sep 9 13:57 mozilla-firefox-1.0.6-r2.tbz2
-rw-r--r-- 1 root root 10218095 sep 30 15:35 mozilla-firefox-1.0.7-r2.tbz2

[...]
J'ai raté quelque chose ?
Merci.
TGL
Bodhisattva
Bodhisattva
Posts: 1978
Joined: Sun Jun 02, 2002 12:13 pm
Location: Rennes, France

Post by TGL »

NetFab, est-ce que tu peux regarder si pour ces paquets présents dans packages/All tu as aussi des symlinks pointant dessus depuis packages/leur_catégorie stp ? Si il n'y a pas de tels symlinks, alors effectivement eclean va les rater (bug connu, mais auquel j'ai pas encore eu le temps de m'atteler). Si il sont bien réferencés dans les catégories par contre, alors c'est un mystère...
Bon, faut que je m'y repenche sur eclean de toute façon, y'a ce bug là et aussi qlqs autres trucs que je voudrais ajouter. J'vais essayer de me bouger le c** ces jours prochains :oops:
netfab
Advocate
Advocate
Posts: 2066
Joined: Thu Mar 03, 2005 1:27 pm
Location: 127.0.0.1

Post by netfab »

Ah oui, effectivement : je n'ai pas les liens :wink:
En fait, il me semble que ces paquets là proviennent de mon ancienne installation.
Il n'y a pas un moyen de recréer ces liens rapidement ?
TGL
Bodhisattva
Bodhisattva
Posts: 1978
Joined: Sun Jun 02, 2002 12:13 pm
Location: Rennes, France

Post by TGL »

NetFab wrote:Il n'y a pas un moyen de recréer ces liens rapidement ?
Hmm... intéressante question tiens...
Et bah tu peux installer "app-portage/portage-utils", et essayer ce petit script :

Code: Select all

#!/bin/bash

PKGDIR=$(portageq envvar PKGDIR)
cd "${PKGDIR}"
for file in All/* ; do
    category="$(qxpak -O -x <(qtbz2 -O -x ${file}) CATEGORY)"
    symlink="${category}/${file##*/}"
    [ -d "${category}" ] || mkdir "${category}"
    [ -f "${symlink}" ] || ln -sf "${PKGDIR}/${file}" "${symlink}"
done
EDIT : en root pour lancer le script, évidemment.
netfab
Advocate
Advocate
Posts: 2066
Joined: Thu Mar 03, 2005 1:27 pm
Location: 127.0.0.1

Post by netfab »

Erreur de syntaxe ligne 6 :
liens.sh: command substitution: line 6: syntax error near unexpected token `('
liens.sh: command substitution: line 6: `qxpak -O -x <(qtbz2 -O -x ${file}) CATEGORY'
J'ai tenté quelques expériences, mais infructueuses, et je préfère m'arrêter avant que ce ne soit irrémédiable :lol:
TGL
Bodhisattva
Bodhisattva
Posts: 1978
Joined: Sun Jun 02, 2002 12:13 pm
Location: Rennes, France

Post by TGL »

liens.sh: command substitution: line 6: syntax error near unexpected token `('
liens.sh: command substitution: line 6: `qxpak -O -x <(qtbz2 -O -x ${file}) CATEGORY'
J'suis dégouté, je l'aimais bien cette ligne moi, et ici elle a marché nickel... Quelle version de Bash utilises tu ? (3.0-r13 ici)

Enfin bon, tant pis, on peux passer par un fichier temporaire plutôt que par la substitution de processus :

Code: Select all

#!/bin/bash

PKGDIR=$(portageq envvar PKGDIR)
xpaktmp=/tmp/tmp.xpak
cd "${PKGDIR}"
for file in All/* ; do
    qtbz2 -O -x ${file} > ${xpaktmp}
    category="$(qxpak -O -x ${xpaktmp} CATEGORY)"
    symlink="${category}/${file##*/}"
    [ -d "${category}" ] || mkdir "${category}"
    [ -f "${symlink}" ] || ln -sf "${PKGDIR}/${file}" "${symlink}"
done
rm -f ${xpaktmp}
User avatar
shingara
Tux's lil' helper
Tux's lil' helper
Posts: 137
Joined: Sun Dec 26, 2004 9:46 am
Location: Paris, FR

Post by shingara »

Super HOWTO TGL, il est vraiment utile de l'utiliser surtout si on a la meme gentoo depuis plus de 6 mois :)
shingara
netfab
Advocate
Advocate
Posts: 2066
Joined: Thu Mar 03, 2005 1:27 pm
Location: 127.0.0.1

Post by netfab »

bash : 3.0-r12

Un grand merci pour ta disponibilité :wink:
# eclean -p -d packages
* Building file list for packages cleaning...
* Here are binary packages that would be deleted:

[...]

* Total space that would be freed in packages directory: 901.7 M
TGL
Bodhisattva
Bodhisattva
Posts: 1978
Joined: Sun Jun 02, 2002 12:13 pm
Location: Rennes, France

Post by TGL »

NetFab wrote:bash : 3.0-r12
Intriguant cette histoire... peut-être un bug qui a été fixé dans le petit paquet de patchs supplémentaires introduits par la -r13... Enfin bref, on s'en fout après tout...
NetFab wrote:Un grand merci pour ta disponibilité :wink:
shingara wrote:Super HOWTO TGL, il est vraiment utile de l'utiliser surtout si on a la meme gentoo depuis plus de 6 mois :)
u're welcome ;)
User avatar
Laifen
n00b
n00b
Posts: 12
Joined: Wed May 31, 2006 9:17 am
Location: Ile de France

Post by Laifen »

Super le post merci ;)
Tuxicomane
Apprentice
Apprentice
Posts: 290
Joined: Tue Nov 14, 2006 10:52 pm
Location: Val-de-Marne, FRANCE

Post by Tuxicomane »

Héhé le up d'un an et demi ! :lol:

Bon dans ce cas, j'en profite pour moi aussi remercier TGL pour cet outil dont je me sers souvent ;)
Enfin quand je suis sous Gentoo quoi ...
castor_fou
Apprentice
Apprentice
Posts: 249
Joined: Thu May 23, 2002 12:12 pm
Location: Clermont-Ferrand, France

Post by castor_fou »

c'est vrai qu'il est bien cet outil !
Post Reply