# [TIP]Entretenir sa Gentoo

## mornik

Bonsoir à toutes et tous,

Apres l'excellent topic sur l'entretient d'une Gentoo, je me suis dits que j'avais quelques notes à prendre. Donc au lieu de me faire un bookmark d'un sujet de 4 pages, ou tout n'est pas à garder, j'ai pensé utile de m'en faire une synthèse d'une page.

Elle est faite, je vous la retranscrit ici.

Cet article est basé sur un sujet du forumhttps://forums.gentoo.org/viewtopic-t-571218.html

Liens externes :

http://www.tryxy.net/index.php/Gentoo_Cleaning

http://www.gentoo.org/doc/fr/gentoolkit.xml

Liens pour la liste des USE flags :

http://gentoo-portage.com/USE

Procédure :

Quelques outils sont nécessaires pour faire un bon nettoyage : gentoolkit, eclean et le script dep du paquet udept, et enfin elogv pour la lecture des logs.

```
$ emerge -av app-portage/gentoolkit

$ emerge -av app-portage/udept

$ emerge -av app-portage/elogv
```

Activer l'autocompletion d'udept :

```
eselect bashcomp enable dep
```

Ne pas oublier de sauvegarder le fichier world et le make.conf avant de les modifier !

La commande dep n'etant plus maintenu, elle est à utiliser avec précaution

Supprimer les slots inutiles :

```
dep -aP
```

Supprimer les paquets devenus inutiles :

```
dep -ad
```

Supprimer les entrée redondante du fichier world :

```
dep -aw
```

Supprimer les overlay inutilisés :

```
layman -S && dep -aO
```

Supprimer du fichier world les paquets inutiles (en terme de dépendance bien sur ^^)

```
dep -as
```

Apres tout ce ménage on s'assure que rien n'a été cassé :

```
emerge -NDua world && revdep-rebuild -a
```

Nettoyage du dossier /usr/portage/distfiles :

```
eclean -d distfiles && eclean -d packages
```

Retrouver quel paquet utilise un USE flag particulier :

```
equery hasuse multiuser
```

Pour synchroniser l'arbre portage :

```
eix-sync
```

La commande est équivalente à :

```
emerge --sync && eix-update && diff-eix
```

Si KDE est utilisé comme gestionnaire, suite à un changement de version (pour supprimer la n-1) (de SlashRhumSlashNeisson du forum):

```
cd /var/db/pkg/ && find kde-base/ -mindepth 1 -type d | perl -pe 's/-[\d\.]+(-r\d+)?$//' | sort -u | xargs emerge -Pp
```

Et pour finir une petite procédure pour la mise à jour quotidienne de la machine :

```
eix-sync && layman -S

emerge -uDaN world

emerge --depclean --ask

dispatch-conf
```

Si un nouveau noyau est disponible :

```
make && make modules_install
```

Pour avoir la liste des modules à compiler :

```
module-rebuild list
```

Et les compiler :

```
module-rebuild rebuild
```

Et enfin on supprime l'ancien noyau :

```
emerge -a gentoo-sources
```

Pour lire les logs générées, en mode console :

```
elogv
```

Note :

Sur un server on peut opter pour la mise à jour de l'arbre portage via cron. Voila le contenu de mon fichier (placé dans cron.weekly, et vixie-cron installé) :

```
#! /bin/sh

exec /usr/bin/nice /usr/bin/layman -S

exec /usr/bin/nice /usr/bin/eix-sync

```

Edit 1 : remplacement de etc-update par dispatch-conf (merci à TGL et darkagonik) voir ce post pour plus de détail sur cette commande

Edit 2 : Modification de l'odre d'exécution dans le script cron (à la fin ), conformément à la proposition de geekounet

Edit 3 : Ajout du warning en rouge sur la commande dep

----------

## kwenspc

Intéressant, ça m'a permis de redécouvrir dep  :Smile: 

Sinon pour gérer une Gentoo sur serveur je préfère, et de loin, la gestion externalisé. C-a-d qu'au lieu de faire travailler le serveur à sa propre mise à jour je préfère le faire ailleurs. Distcc? nan, environnement chrooté sur une autre machine (puissante de préférence). Et de fait il est très facile après de n'avoir sur le serveur que le minimum vital: base de binaires, fichier des config et... pas de gcc, pas de portage, pas de /usr/include etc... (le premier déploiement se faisant en lanssant le serveur à partir d'un livecd puis ssh et après toujours par ssh).

En tout cas merci pour ce récapitulatif, je vais pouvoir utiliser ton travail pour revoir mes scripts (qui automatise la procédure dont je parle juste au dessus). Ceux-ci sont toujours en version alpha, mais je les publierais quand ils seront prêts.

----------

## mornik

Interressant ton idée de chroot pour le server. Je regarderai volontier tes scripts. Ayant qq machines à gérer, ta solution me plaits pas mal. Ce sera un bon addon au document en plus ^^

----------

## swilmet

Tu as oublié de parler de dispatch-conf, qui remplace avantageusement etc-update :

https://forums.gentoo.org/viewtopic-p-2696449.html#2696449

Enfin, c'est une affaire de goût...

Voilà, merci pour le résumé en tout cas  :Smile: 

----------

## mornik

Oups, tu as raison je suis passé à cote de ce post (comment j'ai réussi cet exploit, vu la longueur et qualité de la chose   :Shocked:  )

Je vais modifier mon post ce soir en rentrant pour l'intégrer.

Merci pour ces remarques.

----------

## VisualStation

Merci bien pour ce résumé !

Concis bien fait  :Very Happy:  !

Dommage que la complétion de dep soit pas dans zsh  :Smile:   :Laughing: 

----------

## geekounet

 *mornik wrote:*   

> Note :
> 
> Sur un server on peut opter pour la mise à jour de l'arbre portage via cron. Voila le contenu de mon fichier (placé dans cron.weekly, et vixie-cron installé) :
> 
> ```
> ...

 

Je conseille plutôt de lancer layman -S avant eix-sync, afin que eix prennent en compte les changements dans les overlays  :Wink: 

----------

## mornik

Je viens d'apporter les modifications (etc-update/dispatch-conf et l'odre d'exécution dans le fichier cron).

Merci pour ces retours.

----------

## antoine_

 *kwenspc wrote:*   

> Intéressant, ça m'a permis de redécouvrir dep :)
> 
> Sinon pour gérer une Gentoo sur serveur je préfère, et de loin, la gestion externalisé. C-a-d qu'au lieu de faire travailler le serveur à sa propre mise à jour je préfère le faire ailleurs. Distcc? nan, environnement chrooté sur une autre machine (puissante de préférence). Et de fait il est très facile après de n'avoir sur le serveur que le minimum vital: base de binaires, fichier des config et... pas de gcc, pas de portage, pas de /usr/include etc... (le premier déploiement se faisant en lanssant le serveur à partir d'un livecd puis ssh et après toujours par ssh).

 

Je ne comprends pas bien ton montage. Si je comprends bien, il y a une autre machine qui compile pour le serveur, mais je ne comps pas le rôle du chroot ? Et comment se déroule une mise à jour par exemple ?

Ca a l'air intéressant comme méthode.

----------

## kwenspc

 *mornik wrote:*   

> 
> 
> Interressant ton idée de chroot pour le server. Je regarderai volontier tes scripts. Ayant qq machines à gérer, ta solution me plaits pas mal. Ce sera un bon addon au document en plus ^^
> 
> 

 

 *antoine_ wrote:*   

> 
> 
> Je ne comprends pas bien ton montage. Si je comprends bien, il y a une autre machine qui compile pour le serveur, mais je ne comps pas le rôle du chroot ? Et comment se déroule une mise à jour par exemple ?
> 
> Ca a l'air intéressant comme méthode.

 

Bon je vois que ça interesse pas mal de monde. Je vais retravailler un peu le concept (pas assez automatisé à mon goût  :Smile:  ) et je post ça!

----------

## F!nTcH

+1 ça pourrait m'intéresser également, au moins pour l'astuce  :Wink:  et surtout pour découvrir le distcc dont j'ai entendu parler sans l'avoir utilisé

----------

## kwenspc

 *F!nTcH wrote:*   

> +1 ça pourrait m'intéresser également, au moins pour l'astuce  et surtout pour découvrir le distcc dont j'ai entendu parler sans l'avoir utilisé

 

Je n'utilise distcc à aucun moment, ceci dit ça pourrait être envisagé.

[edit] 

Bon du coup vous m'avez motivés pour enfin améliorer mes scripts (comprendre: faire en sorte qu'ils soient utilisables par d'autres que moi  :Mr. Green:  - eh oui je suis une quiche du concept "user-friendly")

J'espère pouvoir finir ça pour ce WE (donc dans peu de temps). 

Il y a 2 scripts indépendants l'un de l'autre. Un pour créer un envirronement Gentoo chrooté - ça peut être utile pour pas mal de chose si si - et un pour gérer un serveur gentoo basique proprement dit, sachant que sa particularité est donc d'éviter d'avoir portage, gcc, des sources, des headers, voir même python, etc... sur le serveur lui même.

Actuellement j'utilise le second dans un envirronement créé et géré par le premier. 

L'interêt c'est de pouvoir profiter de la puissance de mon desktop pour gérer les maj de mon serveur. Donc je change pas de machine etc ... mon serveur étant un x86 et mon desktop un x86_64 le script me créer un chroot 32 bits, dans lequel ensuite j'applique le second script.

Enfin bref assez causé, je vous sort ça pour ce WE. Ert si je traîne veuillez me secouer la paillasse par mp  :Wink: 

[/edit]

----------

## vdemeester

 *kwenspc wrote:*   

>  *F!nTcH wrote:*   +1 ça pourrait m'intéresser également, au moins pour l'astuce  et surtout pour découvrir le distcc dont j'ai entendu parler sans l'avoir utilisé 
> 
> Je n'utilise distcc à aucun moment, ceci dit ça pourrait être envisagé.
> 
> [edit] 
> ...

 

Oula oula, ça m'a l'air plus qu'intéressant tout ça !!!

Vite vite, le week end arrive  :Very Happy:   :Rolling Eyes:   :Cool: 

----------

## kwenspc

J'ai finis les modifs du premier script hier soir. Ça donne quelque chose de plus épuré.

Je suis dans le second, pareil j'essais de nettoyer, automatiser, simplifier pas mal de chose. Je vous tiens au courant.

----------

## F!nTcH

 *kwenspc wrote:*   

> J'ai finis les modifs du premier script hier soir. Ça donne quelque chose de plus épuré.
> 
> Je suis dans le second, pareil j'essais de nettoyer, automatiser, simplifier pas mal de chose. Je vous tiens au courant.

 

Super, eh, c'est pas l'usine non plus !! On va attendre une semaine de plus s'il faut  :Wink: 

Des fois, vaut mieux prendre le temps de bien faire, plutôt que de faire de la merde ... Et j'en sais quelquechose ...

Bon courage et merci !

----------

## kwenspc

 *F!nTcH wrote:*   

> 
> 
> Des fois, vaut mieux prendre le temps de bien faire, plutôt que de faire de la merde ...
> 
> 

 

 :Laughing: 

Va savoir, si je prends mon temps, le plus gros risque c'est que rien ne sorte du tout.

C'est pas moi qui me plaindrez du fait que vous ayez réussis à me motivé, crois moi.  :Wink: 

(combien de fois j'ai laissé tombé des trucs qui aurait pu devenir un peu plus que de simple "trucs")

En plus là c'est pas bien compliqué.

[edit] ça y est c'est fait. Je n'ai pas pu passer pas mal de choses sur GenServ - becoze code trop crade ou idée encore sur le papier...  - mais ça vous donne une idée du principe. J'espère que ça vous plaira un poil [/edit]

----------

## nemo13

 *mornik wrote:*   

> 
> 
> Si un nouveau noyau est disponible :
> 
> ```
> ...

 

Bonsoir,

En lisant ton TIP je je ne vois pas si tu réutilises systèmatiquement ton ancien .config .

Il te faut peut-être y aller moins gaillardement car lors d'un changement important 2.6.x à 2.6.Y par exemple tu peux récupérer des merdouilles ( style passage en full sata du noyau et t'explose tes pata ide ).

voili-voila :jlp

----------

## d2_racing

 *nemo13 wrote:*   

>  *mornik wrote:*   
> 
> Si un nouveau noyau est disponible :
> 
> ```
> ...

 

Très bien comme TIP, et comme nemo13, peut-être qu'un make oldconfig serait préférable avant de faire make && make modules_install

----------

## mornik

Certes, certes. Mais je crois (je sais plus ou j'ai lus ça) que la récupération de la config était automatique.

Toujours est-il, que ce "tips" vient directement de la documentation officielle (et oui je l'ai lue :p).

Promis je vais regarder cette histoire d'un peu plus pres, mais j'ai pas trop de tps en ce moment. Le retour sera peut-etre un peu long à venir.

----------

## bob1977

Je viens de trouver un petit TIP. A la place de:

 *Quote:*   

> eix-sync && layman -S 

 

On peut faire juste "eix-sync" si on met "*" /etc/eix-sync.conf . Ca mettra a jour portage et les overlays et le cache de eix.

----------

## grosbedos

et mince j'ai tout cassé ..

la commande "dep -ad" m'as dit que le paquet sys-apps/acl ne servait à rien, et n'y connaissant pas grand chose je lui ai fait confiance..

j'aurais pas du.

bon c'est pas grave j'ai une sauvegarde :p heureusment.

----------

## notHerbert

"dep -pad" veut supprimer tout mon KDE   :Exclamation: 

----------

## geekounet

dep n'est plus maintenu depuis 2-3 ans, il ne gère pas du tout les nouvelles features et différences d'implémentations que portage a acquis depuis ce temps là, donc il vaut mieux ne pas si fier.  :Wink: 

En plus c'est scripté en bash (erk) et c'est super lent, et c'est même pas portable avec tous ses GNuismes (il fonctionne pas sur les Gentoo/*BSD)

EDIT: et puis ça fait plus d'une bonne année que depclean a été ré-écrit et qu'il fonctionne parfaitement, à condition d'avoir un emerge -auDN @system @world bien clean de fait avant.  Et si jamais il cherche à unmerge des trucs que vous voulez garder, c'est qu'ils ne sont plus dans le world ou plus en dépendance d'un autre truc (et dans ces cas là en plus, ils ne sont donc plus updaté ni rien, donc pas top), et donc pour régler ça il suffit de les emerge --noreplace  :Smile: Last edited by geekounet on Thu Sep 25, 2008 10:45 pm; edited 1 time in total

----------

## notHerbert

Merci geekounet

Tout ça est bon à savoir - surtout le fonctionnement de emerge --noreplace.   :Very Happy: 

----------

## Ezka

Ce serait pas mal de mettre un gros Warning en rouge a propos de dep ... ça évitera de faire des conneries   :Arrow: 

----------

## philpep-tlse

 *Ezka wrote:*   

> Ce serait pas mal de mettre un gros Warning en rouge a propos de dep ... ça évitera de faire des conneries  

 

+1 Faut faire gaffe a ce qu'on veut quand même.

Un exemple simple : J'ai une redondance dans world, conky (avec USE="wifi") depend de wireless-tools, et j'ai aussi wireless-tools dans world.

Mais si je me fie à dep et j'enlève wireless-tools de mon world, un simple

```
emerge --unmerge conky

emerge --depclean # Hop, on regarde pas trop, on oublie le -a etc...

shutdown -r now
```

Et je me retrouve sans wifi :/

Bref, prudence quand même.

Sinon, très sympa toutes les petites astuces \o/

----------

## mornik

Ajout du warning sur la commande dep.

Désolé pour l'absence de maj, je n'avais plus le net depuis début juillet.

Je testerai ce soir depclean et --noreplace, et je mettrai à jour le post en conséquence. J'attends d'avoir testé, car j'ai pas super bien compris le post de geekounet   :Embarassed: 

----------

