Maintenant que nous savons ce qu’est Portage, comprenons simplement comment il fonctionne. Que se passe-t’il lorsque l’on veut installer un package, et d’ailleurs ça ressemble Ă quoi un package sous Gentoo ?
Les ebuilds
Les packages disponibles dans l’arbre portage sont reprĂ©sentĂ©s par des fichiers appelĂ©s ebuilds. Les ebuilds contiennent toutes les informations nĂ©cessaires Ă la manipulation du package en question par portage (oĂą tĂ©lĂ©charger les sources, quelle licence protège le logiciel, quelle est l’URL du projet, etc…).
Pour toute action vis Ă vis d’un package, portage se base sur les informations des ebuilds correspondants. Je dis des ebuilds car un ebuild contient aussi la version du package qu’il reprĂ©sente. Il y a donc autant de fichiers ebuild que de versions disponibles d’un  package. Prenons l’exemple du package www-client/firefox :
$ ls /usr/portage/www-client/firefox
firefox-3.6.20.ebuild
firefox-3.6.22.ebuild
firefox-8.0.ebuild
firefox-9.0.ebuild
Les versions 3.6.20, 3.6.22, 8.0 et 9.0 sont donc disponibles sur portage. Si nous voulions des informations supplĂ©mentaires ou installer une de ces versions de firefox, portage n’aurait qu’Ă exĂ©cuter les instructions contenues dans le fichier ebuild correspondant, et voilĂ !
Quand Mozilla sortira firefox 10, un dĂ©veloppeur ou contributeur Gentoo devra crĂ©er l’ebuild pour cette version afin qu’il soit disponible dans portage, il est donc crucial de tenir sa liste d’ebuilds Ă jour sur son système.
Synchroniser portage
Mettre Ă jour portage, c’est donc mettre Ă jour la liste des ebuilds disponibles sur son système !
# emerge --sync
Le fameux sync tĂ©lĂ©charge les nouveaux ebuilds et supprime les obsolètes pour nous, c’est grâce Ă cela que nous disposerons du nouveau firefox quand il sortira, et il en va bien sĂ»r de mĂŞme pour tous les packages.
Les dĂ©veloppeurs et contributeurs Gentoo tiennent ensemble Ă jour un arbre portage commun qui est tĂ©lĂ©chargĂ© et rĂ©pliquĂ© par des serveurs qu’on appelle mirrors (le terme mirroir signifie qu’ils contiennent une copie exacte de l’arbre de dĂ©veloppement). Tous les utilisateurs rĂ©pliquent Ă leur tour leur arbre portage local (par dĂ©faut dans /usr/portage/) en se connectant sur un de ces serveurs mirrors lors du sync.
A l’heure oĂą j’Ă©cris ces lignes, le portage tree contient 15459 packages reprĂ©sentant 29931 ebuilds !