# [HOWTO] Entretenir sa Gentoo

## loopx

Bonjour, 

Voici un nouveau tuto qui explique quelques étape permettant d'entretenir une Gentoo ...

Cela passe par la mise à jour, jusqu'a la suppression des dépendances "oubliée"   :Laughing: 

Vos commentaires sont les bienvenus

http://pix-mania.dyndns.org/web_plugin/documentation/DocumentationServlet?action=showpage&id=6


Si le lien ne fonctionne plus, voici une copie de la doc :

Gentoo - entretenir son Linux

Affiché 93 fois, révision 26, dernière mise à jour le 01/04/2008 17:30:00

Objectifs

Dans cette documentation, nous allons mettre à jour une distribution Gentoo Linux et faire un peu de ménage. Vous apprendrez aussi à utiliser correctement les outils du portages.

1. Synchronisation

Pour effectuer une mise à jour, vous devez, dans un premier temps, effectuer une "synchronisation"; procéder ainsi:

# emerge --sync

ou

# emerge-webrsync

Ces deux commandes font exactement la même chose, à la différence que la 2ème utilise le port 80 pour télécharger une archive alors que la première utilise un serveur particulier. En principe, on utilise la 2ème commande uniquement si la première pose problème (très rare).

Cette première action va mettre à jour la "mémoire" du portage (gestionnaire de packet); il pourra avoir connaissance des nouvelles versions et des nouveaux packets disponible.

A la fin de la synchronisation, il est possible que "emerge" vous informe d'une nouvelle version du packet "portage" (le packet contenant les scripts de portage). Si c'est le cas, il faut "emerger" le packet "portage" avant tout autre!

# emerge portage

Cette dernière commande va installer la nouvelle version du "portage" et désinstaller l'ancienne.

2. Mise à jour

La mise à jour de l'entièreté du système est très simple et se réalise généralement en une seule commande :

# emerge -uDNpv world

Dans la liste qui s'affiche, vérifier que les packets sélectionnés dans la mise à jour vous convienne; vérifier également que les flags (USE, VIDEO_CARDS, INPUT_DEVICES, LINGUAS, etc...) sont bien configuré comme vous le souhaiter. Quand tout est correct, retirer les paramètres "pv" et relancer la commande pour commencer la mise à jour.

Note: il est possible que des problèmes se manifestent (voir titre suivant).

Une fois la/les mises à jour terminée, il ne faut surtout pas oublier de mettre à jour les fichiers de configuration avec la commande suivante :

# etc-update

Cette dernière va automatiquement mettre à jour une partie des configurations de votre système. Les configurations restantes seront affichées à l'écran. Il va falloir procéder avec technique, cette dernière étant :

- sélectionner les fichiers que vous avez déjà du modifier (exemple: /etc/conf.d/keymaps pour le clavier)

- supprimer le fichier de mise à jour (pour ne pas repasser à un clavier QWERTY

Une fois que vous aurez exclu tous les fichiers dont vous ne désirer pas de mise à jour, il restera dans la liste des fichiers d'importance mineure (dont vous n'en avez rien à faire ...). Pour eux seulement, faites un "-3" (ou "-5") pour les mettres à jour. Si vous refaites "etc-update", aucun fichier ne doit apparaitre dans la liste.

La mise à jour est terminée  :Smile: 

2.1. Problèmes pouvant survenir

Calculating dependencies... done!

[ebuild N ] gnome-base/control-center-2.20.3 USE="alsa eds esd hal -debug" 0 kB

[ebuild N ] gnome-base/gnome-settings-daemon-2.22.0 USE="alsa esd gstreamer -debug" 0 kB

[ebuild U ] gnome-base/gnome-keyring-2.22.0-r2 [2.20.3] USE="hal pam -debug -doc -test" 862 kB

[ebuild U ] gnome-base/gnome-session-2.22.0 [2.20.3] USE="ipv6 tcpd -branding -debug (-esd%*)" 761 kB

[blocks B ] gnome-base/control-center-2.22 (is blocking gnome-base/gnome-settings-daemon-2.22.0)

L'exemple précédent indique clairement un problème à ce niveau :

[blocks B ] gnome-base/control-center-2.22 (is blocking gnome-base/gnome-settings-daemon-2.22.0)

Cela signifie que le packet "control-center" bloque l'installation de "gnome-settings-daemon". Dans ce cas (et beaucoup d'autre), il faut désinstaller le premier packet pour permettre au deuxième packet de s'installer correctement.

Mais, pourquoi est-ce que cela se produit ???

Eh bien, c'est simple: le premier packet étant généralement déprécié, il faut le désinstaller. C'est le deuxième packet qui proposera, dès maintenant, les fonctionnalités du premier packet maintenant "périmé".

Dans certain cas, le problème est différent: deux packets propose les même fonctionnalités mais un seul peut être installé à la fois. Il faut donc désinstaller le premier si on veut utiliser le deuxième.

La solution est donc de désinstaller le packet "control-center" :

# emerge --unmerge control-center

et ensuite, refaire la demande de mise à jour. Le packet ne devrait plus être "bloquant".

3. Réparer les librairies cassées

Après une mise à jour, il n'est pas rare que celle-ci ai "cassé" des librairies. Il est donc impératif de les "réparer".

Quoi ? C'est quoi une librairie ???

Imaginer... Une librairie est un endroit qui contient tout plein de livres  :Wink: .

Vous, un être humain, vous êtes le "programme". Un programme utilise des "librairies" (ces dernières apportent un plus au programme). Vous utilisez aussi des "librairies": celle-ci vous apportent de multiple informations.

Une librairie, c'est donc une collection de truc (code informatique) permettant d'étendre les fonctionnalités d'un programme.

Note: une librairie n'est PAS quelques chose d'optionel! Si le programme à été compilé pour utiliser une librairie, celle-ci DOIT être présente; dans le cas contraire, une erreur est lancée lors de l'exécution du programme (impossible d'ouvrir la librairie partagée ...).

Pourquoi des librairires ???? Pourquoi une librairie peut être partagée ??

Très simple. Une librairie apportant des fonctionnalités XYZ pourrait être utilisée par plus d'un programme. C'est d'ailleurs un des avantages des librairies : éviter la redondance.

Il est donc tout à fait normal de considérer une librairie comme "partagée" entre plusieurs programme.

Plusieurs programmes peuvent donc utiliser la/les même librairies. Si la librairie est dite "cassée", elle ne peut plus être utilisée par les programmes... les programmes risque donc de ne plus fonctionner correctement (soit tout le programme, soit juste une partie).

Ca veut dire quoi une "librairie cassée" ???

Une librairie est dite cassée lorsque les fichiers "librairies" sont introuvable ou que la version de l'API n'est plus la même. Cela se produit lors de la mise à jour d'une librairie.

En effet, après mise à jour d'une librairie, celle-ci est généralement d'une version plus récente, certain fichier pourrait être introuvable. Les programmes n'arrivent, dès lors, plus à ouvrir les librairies requises et leur fonctionnement basique peut être gravement touché. Pour réparer cela, il faut recompiler le programme qui ne trouve plus la librairie. En faisant cela, il va pouvoir se reconstruire autour de la nouvelle librairie; l'exécution de ce dernier ne provoquera plus d'erreur.

Note: pour 1 librairie cassée, il est probable d'avoir 10 programmes demandant recompilation; c'est tout à fait normal.

Vous ne devrez pas réinstaller les programmes endomagés (à cause des librairies) un à un, à la main. Il existe un outil spécialement concu pour cela. Veuiller l'exécuter après chaque mise à jour pour vérifier la présence de librairies cassées :

# revdep-rebuild -X

Note: le paramètre "-X" précise d'emerger la dernière version disponible dans portage et pas la version actuelle du programme. Cela est très intéressant si la dernière mise à jour date de longtemps. Dans ce cas, les versions déjà installées sur le système risque de n'être plus disponible dans portage, c'est pourquoi le "-X" n'est pas un mauvais choix.

4. Un peu de nettoyage

La première chose à faire quand on veut faire le ménage dans une Gentoo, c'est de virer les sources inutiles. Le meilleur moyen d'y arriver, c'est de procéder comme suit :

- configurer la nouvelle version du kernel installée (après mise à jour)

- l'utiliser

- supprimer toutes les versions antérieurs à la dernière version disponible dans portage

Pour la désinstallation des vieilles sources, faites ceci :

# emerge -Ppv gentoo-sources

Voici un exemple :

loop ~ # emerge -Ppv gentoo-sources --nodeps

>>> These are the packages that would be unmerged:

 sys-kernel/gentoo-sources

    selected: 2.6.22-r6 2.6.23-r2 2.6.23-r3 2.6.23-r4 2.6.23-r5

   protected: 2.6.24-r2

     omitted: none

>>> 'Selected' packages are slated for removal.

>>> 'Protected' and 'omitted' packages will not be removed.

Dans l'exemple précédent, quelques explications sont nécessaire à la bonne compréhension :

- "P" : c'est ce paramètre qui précise à portage de désintaller toutes les versions antérieur au dernier kernel (pour rappel, chaque source est "slotée" et donc, aucune désinstallation automatique ne sera effectuée lors de l'installation d'une version plus récente).

- "--nodeps" : précise au portage de ne pas tenir compte des dépendances (oui, si votre système n'est pas totalement à jour, il pourrait y avoir des dépendances non satisfaites. Pour quand même effectuer le nettoyage des sources, il faut préciser ce paramètre).

Si le résultat est bien celui auquel vous vous attendiez, retirer le "pv" pour lancer la désinstallation "en chaine".

Ci dessous, un exemple reprenant la même commande que l'exemple précédent, mais sans le "--nodeps" (uniquement pour vous montrer l'erreur que l'on peut rencontrer) :

loop ~ # emerge -Ppv gentoo-sources

Calculating dependencies... done!

Dependencies could not be completely resolved due to

the following required packages not being installed:

>=x11-libs/motif-config-0.9 required by x11-libs/openmotif-2.3.0

~kde-base/kdebase-3.5.8 required by kde-base/kdepim-3.5.8

>=dev-libs/check-0.9.2 required by media-libs/gstreamer-0.10.17

~kde-base/kdelibs-3.5.8 required by kde-base/kdepim-3.5.8

~kde-base/kdepim-3.5.9 required by kde-base/kdeaddons-3.5.9 kde-base/kde-3.5.9

Have you forgotten to run `emerge --update --newuse --deep world` prior to

prune?  It may be necessary to manually uninstall packages that no longer

exist in the portage tree since it may not be possible to satisfy their

dependencies.  Also, be aware of the --with-bdeps option that is documented

in `man emerge`.

If you would like to ignore dependencies then use --nodeps.

Dans l'exemple précédent, une dépendance n'est pas satisfaite; portage s'arrete donc... Note que portage est relativement bien pensé et propose généralement, lors d'une erreur, un moyen d'y remédier. C'est ainsi qu'il vous propose d'utiliser "--nodeps" ou alors, de résoudre le problème de dépendance en emergant les packets manquants.

La désinstallation des sources peut prendre un certain temps car elles contiennent énormément de fichier de petite taille.  Les sources de 1 seul kernel prennent environs 300Mo (une fois décompressée); regarder l'exemple qui suit :

loop src # du -sh *

0       linux

373M    linux-2.6.20-xen-r6

377M    linux-2.6.22-gentoo-r6

98M     linux-2.6.23-gentoo

289M    linux-2.6.23-gentoo-r2

288M    linux-2.6.23-gentoo-r3

288M    linux-2.6.23-gentoo-r4

288M    linux-2.6.23-gentoo-r5

400M    linux-2.6.24-gentoo-r2

Dans l'exemple précédent, on vois que l'administrateur à installé beaucoup de sources et que tout ca n'est pas très propre. Beaucoup de perte d'espace disque inutile ...

Ca y est, vous avez foutu vos sources à la poubelle ? Noter que la suppression des sources n'entraine pas la suppression des images compilée (se trouvant dans "/boot"). Il est donc possible de les conservers mais cela reste inutile vu que vous êtes sencé utiliser la dernière version disponible.

Continuons le nettoyage ...

Il est très intéressant de retirer les dépendances non utilisée; ce sont des packets installé via le mécanisme de dépendance. Lors de la désinstallation du packet parent, les packets "fils" restent présent sur le système. Il faut utiliser cette commande pour retirer ceux-ci :

# emerge -pv --depclean

Noter que toutes les dépendances doivent être résolue pour les packets déjà installé, dans le cas contraire, une erreur du genre ce produit :

loop # emerge -pv --depclean

*** WARNING ***  Depclean may break link level dependencies.  Thus, it is

*** WARNING ***  recommended to use a tool such as `revdep-rebuild` (from

*** WARNING ***  app-portage/gentoolkit) in order to detect such breakage.

*** WARNING ***

*** WARNING ***  Also study the list of packages to be cleaned for any obvious

*** WARNING ***  mistakes. Packages that are part of the world set will always

*** WARNING ***  be kept.  They can be manually added to this set with

*** WARNING ***  `emerge --noreplace `.  Packages that are listed in

*** WARNING ***  package.provided (see portage(5)) will be removed by

*** WARNING ***  depclean, even if they are part of the world set.

*** WARNING ***

*** WARNING ***  As a safety measure, depclean will not remove any packages

*** WARNING ***  unless *all* required dependencies have been resolved.  As a

*** WARNING ***  consequence, it is often necessary to run

*** WARNING ***  `emerge --update --newuse --deep world` prior to depclean.

Calculating dependencies... done!

Dependencies could not be completely resolved due to

the following required packages not being installed:

>=x11-libs/motif-config-0.9 required by x11-libs/openmotif-2.3.0

>=dev-libs/check-0.9.2 required by media-libs/gstreamer-0.10.17

~kde-base/kdepim-3.5.9 required by kde-base/kdeaddons-3.5.9 kde-base/kde-3.5.9

Have you forgotten to run `emerge --update --newuse --deep world` prior to

depclean?  It may be necessary to manually uninstall packages that no longer

exist in the portage tree since it may not be possible to satisfy their

dependencies.  Also, be aware of the --with-bdeps option that is documented

in `man emerge`.

Dans l'exemple précédent, 3 packets manques à l'appel; ce sont des dépendances qui ne sont pas satisfaite. Il faut les installer avant de pouvoir procéder au nettoyage complet. Lorsque cela est fait et qu'il n'y a plus d'erreur au lancement de la commande et que le résultat vous convient, retirer le "-pv" de la commande et relancer la pour procéder.

Il est indiqué, dans les informations de la commande (affiché lors de l'exécution), que cette commande pourrait casser des librairies, c'est pourquoi il est utile d'exécuter la commande suivante pour détecter et réparer ces cassages :

# revdep-rebuild -X

Cette dernière va emerger le nécessaire en utilisant la dernière version disponible.

Voilà, votre système est à jour, il est nettoyé et les librairies qui ont été cassées sont réparée. Il ne reste plus qu'a vérifier si il existe des fichiers de configuration devant être mis à jour... Exécuter donc cette dernière commande :

# etc-update

Fini  :Smile:    Votre Gentoo est repartie pour 3 ans de plus  :Wink: 

---------------

--- THE END ---

---------------

----------

## Biloute

On dirait que le lien marche pas

----------

## loopx

ouaip, sorry

je viens de rentrer de la mer et ...

après semi-mise à jour ..

semblerais que mes screens aient foutu le camp   :Shocked:     et mon serveur d'application aussi ...

étrange étrange ...

EDIT: y a eu une coupure de courant samedi à 16h environs ... mon serveur est donc tombé et mon frère l'a surement rallumé (mais jboss démarre pas encore tout seul ...) donc, le liens était mort ...

c'est réglé maintenant   :Wink: 

----------

## anigel

C'est exactement pour ça que le forum est là en fait : non pas pour permettre de faire des liens vers son "chez soi", mais bien pour être certain que le contenu des documents soit accessible 24/24...

Plutôt que de créer une palanquée de sujets dans ce sous-forum pour inviter les gens à visiter ton site, je crois qu'un lien dans ta signature aurait suffi, non ?

----------

## loopx

 *anigel wrote:*   

> Plutôt que de créer une palanquée de sujets dans ce sous-forum pour inviter les gens à visiter ton site, je crois qu'un lien dans ta signature aurait suffi, non ?

 

Non, je pense pas du tout que cela suffi. J'ai (sur le tit bouton WWW) mon site mais, personne n'irais le voir (moi je ne vais pas voir le votre, parce que un site perso traite rarement de ce genre de documentation ...).

La section HOWTO est faites pour regrouper des astuces et autres, donc je crée un thread par doc que je fais qui pourrait intéresser des gens (ce qui est le cas).

Je ne veux pas faire des copiers coller ainsi, ca ne m'intéresse. Mais le lien m'intéresse (c'est ainsi que je vous montre des nouveaux truc *utile* sur mon site); cela n'a rien avoir avec le fait de vouloir lier mon site un peu partout  :Wink: 

Mais, anigel, je suis quand même d'accord avec toi; il faut, en principe, mettre la doc ICI. Or, j'ai tout un système pour encoder un message et donc, je préfère utiliser le mien et pas celui du forum  :Wink:  (même si le mien à encore beaucoup de progrès à faire). De plus, les problèmes de ce genre de doivent pas arriver, il faudrait que j'essaie de démarrer le serveur d'application au redémarrage du pc; ainsi personne n'aurait rien vu   :Laughing: 

----------

## anigel

Moi je vois simplement ça comme de la pub vers un site perso.

Certes ça parle de Gentoo, et c'est probablement intéressant (quand ça marchera j'irai voir), mais globalement ta doc sera toujours beaucoup moins lue sur ton site que sur le forum. D'abord parceque une des forces de Gentoo, c'est d'avoir su centraliser sa doc : lorsqu'on cherche, on a finalement assez peu de sources d'infos (le forum, irc, le wiki). Et ensuite parceque malgré toute la bonne volonté dont tu fera preuve, tu n'arrivera jamais avec tes maigres moyens à garantir une qualité de service comparable à l'infrastructure de Gentoo. Je comprends que le fait de copier / coller ne soit pas une sinécure : j'ai moi-même refusé de me livrer à ce sport il y a quelques années ; je considérais ça comme une perte de temps ; je n'ai pas changé d'avis.

Après, reste la question de savoir si oui ou non ce forum peut devenir une liste de liens plus ou moins périmés vers les sites que machin et truc ont décidé de monter un beau dimanche pluvieux, et ont laissé tombé à la ré-install suivante (je caricature, mais tu verra dans 2 ans que j'ai pas tort), ou si ça doit rester une source fiable d'infos et de docs qu'on est certains de trouver là où on les cherche. Heureusement pour toi, je ne suis plus modo ici   :Laughing:  .

----------

## loopx

anigel,

Tu sais, je t'apprécie beaucoup, mais parfois j'ai mes idées et personne ne pourra jamais me les enlevers  :Smile: 

As-tu lu les "informations sur PiX-MANIA" sur mon site web ?

Si tu l'aurais fait, tu aurais compris que de un, le lien sera jamais périmé et si il devait être changé, j'irais personnelement modifier le lien présent sur le forum (via une recherche ...).

De deux, la qualité de service est presque bonne, ... ok mon frère à fait pété les plombs samedi mais plutard, quand j'aurais de l'argent, je pourrais soit prendre un truc pour que ca resiste quelques minutes, ou prendre un serveur dédié.

Ok pour la recherche du forum, c'est pourquoi j'essaie d'incorporer tout les mots clé utile dans le poste visant à, soit-disant, promouvoir un site perso.

L'idée que j'ai ne date pas d'hier, et ce n'est pas demain qu'elle cessera   :Wink: 

Tu peux déjà te dire que tant que la plateforme java existera, mon projet suivra   :Wink: 

EDIT: l'accès à mon site est, généralement, fiable (sauf bien sur les 2 problèmes rencontrés dernièrement, je te l'accorde). Est-ce pour cela qu'il faut à tout prix bannir des informations qui pourraient aider des petits nouveaux gentooistes ? Ma réponse, tu la connais déjà   :Cool: 

Tout le net est basé sur des liens... avec un peu de bonne volonté, ceux-ci ne seront pas cassé.

EDIT2: le but de la doc sur mon site, c'est d'en faire profiter mes connaisances direct; la j'essaie d'en faire profiter la communauté "que j'aime" ^^

----------

## anigel

Re-bonsoir  :Wink: .

Je te remercie pour ces marques d'affection, et je tiens à dire que si le ton était un peu railleur dans mon dernier post, je ne t'en tiens pas rigueur en tant que personne : le fait que j'ai une conception différente de l'usage de ce forum n'enlève rien à l'effort de rédaction que tu as fait pour monter ton site, et qui reste dans tous les cas louable. Loin de moi l'idée de dénigrer cet effort, quelle qu'en soit la qualité.

Ce qui me gêne, je l'ai déjà expliqué plus haut, je ne recommence pas ; d'autant plus que ce n'est plus à moi de décider de ce qui est acceptable ou non.

N'empêche : je trouve dommage de ne pas avoir tout consigné ici directement : gain de temps, format de données standardisé (il existe un paquet d'outils permettant d'importer du contenu à partir d'une base phpBB), format de rédaction bien connu (il existe des tonnes de traducteurs bbcode), etc... Et sans compter la fiabilité... Quel intérêt d'écrire des docs si ton frère a débranché la machine et que plus personne ne peut les lire ? Bref, je n'insiste pas ; fais comme bon te semble.

----------

## anigel

... Et sans compter que c'est super-pas-ergonomique de faire des commentaires ici pour un truc situé ailleurs !

----------

## loopx

tout à fait d'accord, c'est juste que mon plugin documentation n'est pas encore terrible   :Confused: 

----------

## kopp

 *anigel wrote:*   

> 
> 
> Après, reste la question de savoir si oui ou non ce forum peut devenir une liste de liens plus ou moins périmés vers les sites que machin et truc ont décidé de monter un beau dimanche pluvieux, et ont laissé tombé à la ré-install suivante (je caricature, mais tu verra dans 2 ans que j'ai pas tort), ou si ça doit rester une source fiable d'infos et de docs qu'on est certains de trouver là où on les cherche. Heureusement pour toi, je ne suis plus modo ici   .

 

Allez, 3 ans, jour pour jour, et tu n'as pas tort, le lien ne marche plus  :Wink: 

----------

