Gentoo Logo

Avertissement : Ce manuel a été remplacé par une version plus récente et n'est plus maintenu.


[ << ] [ < ] [ Sommaire ] [ > ] [ >> ]


1. Introduction à Portage

Table des matières :

1.a. Bienvenue dans le monde de Portage

Portage est probablement l'innovation de Gentoo la plus remarquable en ce qui concerne la gestion des logiciels. Sa grande flexibilité et ses nombreuses fonctionnalités font parfois dire de Portage qu'il est le meilleur outil de gestion des logiciels pour Linux.

Portage a été écrit en Python et en Bash qui sont tous les deux des langages scriptés, c'est-à-dire que 100 % du code source est installé et consultable sur tous les systèmes Gentoo.

La plupart des utilisateurs interagiront avec Portage via la commande emerge. Ce chapitre n'a pas pour vocation de dupliquer toute l'information disponible dans la page man de emerge. Pour consulter la page man, faites :

Exemple de code 1.1 : Consulter la page man de emerge

$ man emerge

1.b. L'arbre Portage

Les ebuilds

Quand nous parlons de paquets, nous parlons des logiciels qui sont disponibles dans Gentoo grâce à l'arbre de Portage. Celui-ci est un ensemble d'ebuilds qui sont en fait des fichiers qui donnent toutes les informations nećessaires à Portage pour installer un logiciel. Par défaut, ces ebuilds se trouvent dans /usr/portage.

Dès que vous employez Portage pour une action relative aux paquets, il utilisera les ebuilds de votre système. Il est donc important de maintenir les ebuilds de votre système à jour pour que Portage puisse installer des nouvelles versions des logiciels que vous utilisez ou des correctifs de failles de sécurité.

Mise à jour de l'arbre Portage

L'arbre Portage est généralement mis à jour avec rsync, qui est un outil de transfert de fichiers incrémental. La mise à jour se fait simplement avec la commande emerge. L'utilisation de rsync est tout à fait transparente :

Exemple de code 2.1 : Mettre l'arbre Portage à jour

# emerge --sync

Si vous ne pouvez pas utiliser rsync à cause, par exemple, d'un pare-feu, vous pouvez quand même mettre votre arbre Portage à jour avec la commande emerge-webrsync. Celle-ci télécharge le dernier instantané de l'arbre Portage et l'installe sur votre système. Un instantané est généré automatiquement chaque jour sur les miroirs de Gentoo.

Exemple de code 2.2 : Utiliser emerge-webrsync

# emerge-webrsync

1.c. Gérer vos logiciels

Rechercher un paquet

Pour rechercher un logiciel dans l'arbre Portage, vous pouvez utiliser emerge. En effet, la commande emerge search affiche la liste des paquets dont le titre correspond plus ou moins au terme recherché.

Par exemple, pour trouver tous les paquets dont le nom contient « pdf », vous utiliseriez :

Exemple de code 3.1 : Trouver les paquets dont le nom contient « pdf »

$ emerge search pdf

Si vous voulez aussi chercher dans les descriptions, utilisez l'option --searchdesc (ou -S) :

Exemple de code 3.2 : Trouver les paquets relatifs à « pdf »

$ emerge --searchdesc pdf

La liste des paquets affichés contient quelques informations utiles pour chaque paquet. Les libellés sont explicites et nous n'en dirons pas plus ici.

Exemple de code 3.3 : Exemple de résultat d'une recherche

*  net-print/cups-pdf
      Latest version available: 1.5.2
      Latest version installed: [ Not Installed ]
      Size of downloaded files: 15 kB
      Homepage:    http://cip.physik.uni-wuerzburg.de/~vrbehr/cups-pdf/
      Description: Provides a virtual printer for CUPS to produce PDF files.
      License:     GPL-2

Installer des logiciels

Une fois que vous avez identifié un paquet que vous voulez installer, il vous suffit d'utiliser la commande emerge suivie du nom du paquet pour l'installer. Par exemple, pour installer gnumeric :

Exemple de code 3.4 : Installer gnumeric

# emerge gnumeric

De nombreuses applications dépendent d'autres paquets. Par conséquent, quand vous installez un logiciel, il se peut que Portage en installe d'autres qui sont nécessaires au bon fonctionnement du paquet que vous installez. Si vous voulez connaître la liste des paquets que Portage installerait si vous installiez un paquet donné, vous pouvez utiliser l'option --pretend. Un exemple :

Exemple de code 3.5 : Lister les paquets à installer pour gnumeric

# emerge --pretend gnumeric

Quand vous installez un paquet avec Portage, il télécharge les sources nécessaires et les sauve dans le répertoire /usr/portage/distfiles. Ensuite, Portage décompresse l'archive, compile son contenu et installe le logiciel. Si vous voulez télécharger les sources sans installer le paquet, utilisez l'option --fetchonly. Par exemple, pour télécharger les sources de gnumeric :

Exemple de code 3.6 : Télécharger les sources de gnumeric

# emerge --fetchonly gnumeric

Supprimer un paquet

Pour désinstaller un paquet de votre système, utilisez emerge unmerge. Cette commande supprime les fichiers qui avaient été installés par Portage, mais ne supprime pas les fichiers de configuration si vous les avez modifiés après l'installation. Cela vous permet de réutiliser vos fichiers de configuration si vous réinstallez le paquet plus tard.

Cependant, un avertissement est de mise :Portage ne vérifie pas que le paquet que vous supprimez est nécessaire au bon fonctionnement d'un autre paquet. Toutefois, un message s'affichera si vous essayez de supprimer un paquet important dont la disparition causerait de graves problèmes.

Exemple de code 3.7 : Supprimer gnumeric de votre système

# emerge unmerge gnumeric

Quand vous supprimez un paquet, les paquets dont il dépend qui avaient été installés initialement ne seront pas désinstallés automatiquement. Pour que Portage recherche les dépendances qui peuvent être supprimées, utilisez l'option depclean. Nous en reparlerons plus loin.

Mettre votre système à jour

Pour maintenir votre système en bon état et disposer des correctifs de failles de sécurité, vous devriez le mettre à jour régulièrement. Puisque Portage ne se base que sur les ebuilds de votre machine, vous devez vous assurez que votre arbre Portage est à jour. Une foir votre arbre Portage à jour, vous pouvez mettre votre système à jour avec la commande emerge --update world :

Exemple de code 3.8 : Mettre votre système à jour

# emerge --update world

Portage recherche alors des versions plus récentes des logiciels que vous avez installés explicitement et uniquement ceux-là. Portage ignorera les paquets qui ont été installés automatiquement pour qu'un paquet que vous avez demandé puisse être installé. Si vous voulez que Portage prenne ces paquets en considération, utilisez l'option --deep :

Exemple de code 3.9 : Mettre tout votre système à jour

# emerge --update --deep world

Si vous avez modifié les otions de la variable USE, vous devriez également ajouter l'option --newuse pour que Portage vérifie si certains paquets ne doivent pas être recompilés. Par exemple :

Exemple de code 3.10 : Une mise à jour complète

# emerge --update --deep --newuse world

Les paquets sans contenu

Certains paquets ne contiennent aucun logiciel, mais servent à installer un ensemble de paquets. Par exemple, le paquet kde sert à installer un environnement KDE complet et provoque l'installation d'un grand nombre de paquets relatifs à KDE.

Supprimer un tel paquet avec la commande emerge unmerge n'aurait aucune influence sur votre système puisque tous les paquets dépendants resteraient installés.

Portage permet de supprimer les dépendances orphelines, mais, pour cela, vous devez d'abord mettre votre système complètement à jour en tenant compte d'éventuelles modifications apportées à votre variable USE. Vous pouvez ensuite utiliser emerge depclean pour supprimer les dépendances orphelines. Par après, vous devriez recompiler les applications qui étaient liées dynamiquement avec les paquets que vous venez de supprimer. Les paquets désinstallés ne sont plus nécessaires à la bonne marche de ces applications.

Tout cela peut être résumé en trois commandes :

Exemple de code 3.11 : Supprimer les dépendances orphelines

# emerge --update --deep --newuse world
# emerge depclean
# revdep-rebuild

La commande revdep-rebuild fait partie du paquet gentoolkit ; n'oubliez pas de l'installer :

Exemple de code 3.12 : Installer gentoolkit

# emerge gentoolkit

1.d. Quand Portage se plaint...

À propos des « SLOTs », paquets virtuels, branches, architectures et profils

Comme nous l'avons déjà dit, Portage est très puissant et offre de nombreuses fonctionnalités que d'autres gestionnaires de logiciels n'ont pas. Survolons les différents aspects de Portage.

Portage permet à plusieurs versions d'un même paquet de cohabiter sur le même système. D'autres distributions ont tendance à renommer les paquets en fonction de la version (par exemple freetype et freetype2) alors que Portage utilise des « SLOTs ». Un ebuild peut placer chaque version du logiciel dans un slot et des versions qui sont dans des slots différents peuvent être installées en même temps. Par exemple, le paquet freetype a des versions avec SLOT="1" et SLOT="2".

Dans certains cas, différents paquets installent la même fonctionnalité. Par exemple, metalogd, sysklogd et syslog-ng gèrent tous le jounal du système, mais un logiciel qui dépendrait du journal système ne peut pas dépendre directement de metalogd ou d'un autre. Le système doit aussi fonctionner si l'utilisateur a choisi un autre gestionnaire de journal. Portage permet de définir des paquets virtuels. Les trois paquets cités ci-dessus fournissent la fonctionnalité virtual/syslog et les paquets qui ont besoin d'un journal système dépendent de celle-ci.

Portage classe les paquets dans plusieurs branches. Par défaut, votre système n'accepte que les paquets que Gentoo considère stables. Bien souvent, quand une nouvelle version d'un logiciel sort, elle est d'abord ajoutée à la branche dite « instable », ce qui signifie que plus de tests sont nécessaires avant de considérer le logiciel comme stable. Vous verrez les paquets dits instables dans votre arbre, mais Portage ne les installera pas automatiquement avant qu'ils ne soient stabilisés.

Certains logiciels ne sont disponibles que pour certaines architectures ou ne fonctionnent pas du tout sur d'autres. Parfois, un logiciel a besoin de plus de tests sur une architecture donnée ou les développeurs responsables d'un paquet n'ont pas la possibilité de le valider pour d'autres processeurs.

Chaque installation de Gentoo appartient à un profil qui contient la liste des paquets qui forment un système minimal.

Paquets bloqués

Exemple de code 4.1 : Avertissement à propos d'un paquet bloquant (avec --pretend)

[blocks B     ] gnome-base/bonobo-activation (from pkg gnome-base/libbonobo-2.4.0)

Exemple de code 4.2 : Avertissement à propos d'un paquet bloquant (sans --pretend)

!!! Error: the gnome-base/bonobo-activation package conflicts with another package.
!!!        both can't be installed on the same system together.
!!!        Please use 'emerge --pretend' to determine blockers.

Les ebuilds contiennent des informations relatives aux dépendances des logiciels entre eux. Il y a deux sortes de dépendances : les dépendances à l'installation définies par DEPEND et les dépendances à l'utilisation définies dans RDEPEND. Un blocage peut se produire quand un paquet est considéré incompatible avec une dépendance.

Pour résoudre un tel blocage, vous pouvez soit ne pas installer le logiciel en question, soit désinstaller le paquet qui bloque. Dans l'exemple ci-dessus, vous auriez le choix entre ne pas installer libbonobo ou d'abord désinstaller bonobo-activation.

Les paquets masqués

Exemple de code 4.3 : Avertissement à propos de paquets masqués

!!! all ebuilds that could satisfy "bootsplash" have been masked.

Exemple de code 4.4 : Avertissement à propos de paquets masqués avec la raison

!!! possible candidates are:

- gnome-base/gnome-2.8.0_pre1 (masked by: ~x86 keyword)
- lm-sensors/lm-sensors-2.8.7 (masked by: -sparc keyword)
- sys-libs/glibc-2.3.4.20040808 (masked by: -* keyword)
- dev-util/cvsd-1.0.2 (masked by: missing keyword)
- media-video/ati-gatos-4.3.0 (masked by: package.mask)
- sys-libs/glibc-2.3.2-r11 (masked by: profile)

Quand vous essayez d'installer un paquet qui n'est pas disponible pour votre système, vous recevez ce type d'erreur. Vous devriez essayer d'installer une autre application qui est disponible pour votre environnement ou attendre que le paquet devienne disponible. Un paquet est toujours masqué pour une bonne raison :

  • ~arch keyword indique que le paquet n'a pas été suffisamment testé et n'est pas encore dans la branche stable. Vous devriez essayer à nouveau quelques jours ou quelques semaines plus tard.
  • -arch keyword ou -* keyword indique que l'application ne fonctionne pas sur votre architecture. Si vous pensez le contraire, veuillez le signaler via bugzilla.
  • missing keyword indique que l'application n'a pas été testée sur votre architecture. Vous pouvez demander à l'équipe en charge de celle-ci de tester l'application qui vous intéresse ou la tester vous-même et soumettre vos résultats sur bugzilla.
  • package.mask indique que le paquet est cassé, instable, voire pire et qu'il a été masqué pour que vous ne l'utilisiez pas.
  • profile indique que le paquet n'est pas compatible avec votre profil. L'application pourrait abîmer votre système.

Dépendances manquantes

Exemple de code 4.5 : Avertissement à propos de dépendances manquantes

emerge: there are no ebuilds to satisfy ">=sys-devel/gcc-4.2-r4".

!!! Problem with ebuild sys-devel/gcc-3.4.2-r2
!!! Possibly a DEPEND/*DEPEND problem.

L'application que vous essayez d'installer dépend d'autres paquets qui ne sont pas disponibles pour votre système. Veuillez vérifier sur bugzilla si le problème est déjà connu et veuillez le signaler dans le cas contraire. À moins que vous ne mélangiez les branches stables et instables, cela de doit pas arriver et peut être considéré comme un bogue.

Noms d'ebuilds ambigus

Exemple de code 4.6 : Avertissement à propos de noms d'ebuilds ambigus

!!! The short ebuild name "aterm" is ambiguous.  Please specify
!!! one of the following fully-qualified ebuild names instead:

    dev-libs/aterm
    x11-terms/aterm

Le paquet que vous essayez d'installer a un nom qui désigne plusieurs paquets dans des catégories différentes. Vous devez mentionner la catégorie du paquet que vous voulez installer. Portage affiche les différentes possibilités.

Dépendances circulaires

Exemple de code 4.7 : Avertissement à propos de dépendances circulaires

!!! Error: circular dependencies:

ebuild / net-print/cups-1.1.15-r2 depends on ebuild / app-text/ghostscript-7.05.3-r1
ebuild / app-text/ghostscript-7.05.3-r1 depends on ebuild / net-print/cups-1.1.15-r2

Deux (ou plus) paquets dépendent l'un de l'autre et ne peuvent pas être installés. Il est très probable que cela soit un bogue. Veuillez synchroniser votre arbre Portage. Si le problème persiste, veuillez vérifier si le problème est connu dans bugzilla et le signaler dans le cas contraire.

Problèmes lors du téléchargement

Exemple de code 4.8 : Avertissement à propos d'un problème au téléchargement

!!! Fetch failed for sys-libs/ncurses-5.4-r5, continuing...
(...)
!!! Some fetch errors were encountered.  Please see above for details.

Portage n'a pas pu télécharger les sources de l'application et essaie éventuellement d'installer les autres paquets que vous auriez spécifiés avec la commande emerge. Ce problème peut être dû à un miroir qui n'est pas encore synchronisé ou à un ebuild qui référence un serveur de sources incorrect. Il se peut aussi que le serveur soit momentanément indisponible.

Veuillez réessayer après quelques heures.

Protection des paquets du profil système

Exemple de code 4.9 : Avertissement à propos du profil système

!!! Trying to unmerge package(s) in system profile. 'sys-apps/portage'
!!! This could be damaging to your system.

Vous avez demandé à Portage de supprimer un paquet qui fait partie du profil système. Le supprimer pourrait rendre votre système inutilisable.


[ << ] [ < ] [ Sommaire ] [ > ] [ >> ]


Imprimer

Voir tout

Dernière mise à jour le 9 novembre 2004

Cette traduction n'est plus maintenue

Résumé : Portage sert à maintenir votre système à jour. Ce chapitre décrit les fonctions élémentaires de Portage.

Sven Vermeulen
Auteur

Daniel Robbins
Auteur

Chris Houser
Auteur

Jerry Alexandratos
Auteur

Seemant Kulleen
Développeur Gentoo x86

Tavis Ormandy
Développeur Gentoo Alpha

Jason Huebel
Développeur Gentoo AMD64

Guy Martin
Développeur Gentoo HPPA

Pieter Van den Abeele
Développeur Gentoo PPC

Joe Kallar
Développeur Gentoo SPARC

John P. Davis
Correcteur

Pierre-Henri Jondot
Correcteur

Eric Stockbridge
Correcteur

Rajiv Manglani
Correcteur

Jungmin Seo
Correcteur

Stoyan Zhekov
Correcteur

Jared Hudson
Correcteur

Colin Morey
Correcteur

Jorge Paulo
Correcteur

Carl Anderson
Correcteur

Jon Portnoy
Correcteur

Zack Gilburd
Correcteur

Jack Morgan
Correcteur

Benny Chuang
Correcteur

Erwin
Correcteur

Joshua Kinard
Correcteur

Tobias Scherbaum
Correcteur

Grant Goodyear
Relecteur

Gerald J. Normandin Jr.
Relecteur

Donnie Berkholz
Relecteur

Ken Nowack
Relecteur

Lars Weiler
Contributeur

Xavier Neys
Traducteur responsable

Camille Huot
Traducteur responsable

Benjamin Girault
Traducteur

Olivier Fisette
Traducteur

Olivier Roomans
Traducteur

Vincent Strubel
Traducteur

Donate to support our development efforts.

Copyright 2001-2014 Gentoo Foundation, Inc. Questions, Comments? Contact us.