Gentoo Logo

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


3. Portage et ses fonctionnalités

Table des matières :

3.a. Les caractéristiques de Portage

Portage offre un ensemble de fonctionnalités qui vous aident à mieux utiliser Gentoo. Certaines fonctionnalités sont basées sur des outils tiers qui permettent d'améliorer les performances, la fiabilité, la sécurité, etc.

Pour activer ou désactiver certaines fonctionnalités, vous devez modifier la variable FEATURES dans le fichier /etc/make.conf. Séparez les mots-clefs par des espaces. Souvent, vous devrez aussi installer l'outil requis pour utiliser la fonctionnalité souhaitée.

Toutes les fonctionnalités disponibles ne sont pas reprises ici. Veuillez lire la page man de make.conf pour en savoir plus.

Exemple de code 1 : Lire la page man de make.conf

$ man make.conf

Pour connaitre les fonctionnalités qui sont actives sur votre système, utilisez la commande emerge --info et regardez le contenu de la variable « FEATURES ».

Exemple de code 2 : Afficher les fonctionnalités actives

$ emerge --info | grep FEATURES

3.b. Compilation distribuée

Utiliser distcc

distcc est un programme qui permet de distribuer des compilations sur plusieurs machines, pas nécessairement identiques, d'un réseau. Le client distcc envoie toutes les données nécessaires aux serveurs distcc (qui exécutent distccd) disponibles afin qu'ils puissent compiler des parties du code source au profit du client. Le résultat est une compilation plus rapide.

Vous trouverez une description plus élaborée de distcc (et des informations sur la manière de le faire fonctionner avec Gentoo) dans notre Documentation Gentoo pour distcc.

Installation de distcc

Distcc est fourni avec une interface graphique qui permet de suivre les tâches de compilation que votre ordinateur envoie. Si vous utilisez Gnome, ajoutez « gnome » à votre variable USE. Mais si vous n'utilisez pas Gnome et souhaitez tout de même avoir une interface graphique, vous pouvez ajouter « gtk » à votre variable USE.

Exemple de code 3 : Installer distcc

# emerge distcc

Activer le support distcc pour Portage

Ajoutez le mot-clé distcc à la variable FEATURES du fichier /etc/make.conf. Ensuite, modifiez la variable MAKEOPTS pour y ajouter -jXX est le nombre de processeurs qui exécutent distccd (l'hôte actuel inclus) plus un. Cette valeur donne en général les meilleurs résultats, mais vous pouvez en essayer d'autres.

Ensuite, exécutez distcc-config et entrez la liste des serveurs distcc disponibles. Pour donner un exemple simple, nous supposerons que les serveurs distcc disponibles sont 192.168.1.102 (l'hôte actuel), 192.168.1.103 et 192.168.1.104 (deux hôtes « distants ») :

Exemple de code 4 : Configurer distcc pour qu'il utilise trois serveurs distcc

# distcc-config --set-hosts "192.168.1.102 192.168.1.103 192.168.1.104"

Bien entendu, n'oubliez pas de lancer le démon distccd :

Exemple de code 5 : Lancer le démon distccd

# rc-update add distccd default
# /etc/init.d/distccd start

3.c. Utiliser un cache pour la compilation

À propos de ccache

ccache est un cache rapide pour compilateur. Lorsque vous compilez un programme, il mettra les résultats intermédiaires en cache afin que, s'il vous arrive de recompiler le même programme, le temps de compilation soit largement réduit. Avec des applications communes, cela peut entrainer des compilations 5 à 10 fois plus rapides.

Si vous êtes intéressé par le fonctionnement interne de ccache, veuillez visiter le site de ccache.

Installation de ccache

Utilisez la commande emerge ccache pour installer ccache :

Exemple de code 6 : Installer ccache

# emerge ccache

Activer le support ccache pour Portage

Ajoutez le mot-clé ccache à la variable FEATURES du fichier /etc/make.conf. Ensuite, ajoutez la variable CCACHE_SIZE qui définit la taille par défaut du cache utilisé par ccache. Une valeur de 2 Go est recommandée.

Exemple de code 7 : Editer CCACHE_SIZE dans /etc/make.conf

CCACHE_SIZE="2G"

Pour vérifier que ccache fonctionne, vous pouvez exécuter ccache -s pour afficher les statistiques de ccache. Puisque Portage utilise un répertoire différent du répertoire par défaut, vous devez définir la variable CCACHE_DIR :

Exemple de code 8 : Afficher les statistiques de ccache

# CCACHE_DIR="/var/tmp/ccache" ccache -s

Le répertoire /var/tmp/ccache est utilisé par Portage par défaut. Vous pouvez spécifier le répertoire de votre choix en définissant la variable CCACHE_DIR dans le fichier /etc/make.conf.

Cependant, quand vous exécutez ccache, pour voir les statistiques par exemple, le répertoire par défaut est ${HOME}/.ccache, ce qui explique pourquoi vous devez définir la variable CCACHE_DIR pour voir les statistiques ccache de Portage.

Utilisation de ccache en dehors de Portage

Si vous souhaitez utiliser ccache pour les compilations en dehors de celles de Portage, vous pouvez ajouter /usr/lib/ccache/bin au début de votre variable PATH (ou tout au moins avant /usr/bin). Pour cela, éditez le fichier .bash_profile qui se trouve à la racine de votre compte utilisateur. Utiliser .bash_profile est une des manières de définir la variable PATH :

Exemple de code 9 : Modifier le fichier .bash_profile

  PATH="/usr/lib/ccache/bin:/opt/bin:${PATH}"

3.d. Paquets binaires

Créer des paquets binaires

Nous avons déjà parlé de l'utilisation de paquets précompilés, mais comment crée-t-on son propre paquet précompilé ?

Si le paquet est déjà installé, vous pouvez utiliser la commande quickpkg. Si ce n'est pas le cas, utilisez les options --buildpkg ou --buildpkgonly avec la commande emerge. La deuxième option prépare un paquet binaire sans l'installer sur votre machine.

Si vous souhaitez que Portage construise par défaut des paquets binaires pour tous les paquets que vous installez sur votre système, vous pouvez mettre le mot-clé builpkg dans la variable FEATURES dans le fichier /etc/make.conf.

Vous trouverez plus de détails à propos de la création de paquets binaires dans la documentation de catalyst (en anglais) : Catalyst Reference Manual et Catalyst FAQ.

Installer des paquets précompilés

Bien que Gentoo ne fournisse pas de système centralisé de distribution de paquets binaires, rien ne vous empêche d'en créer un. Vous pourriez très bien stocker tous vos paquets binaires sur un serveur et utiliser celui-ci pour mettre plusieurs machines à jour. Pour utiliser un tel serveur, vous devez le définir dans la variable PORTAGE_BINHOST. Si vous avez stocké vos paquets sur un serveur ftp ftp://buildhost/gentoo, utilisez :

Exemple de code 10 : Définir PORTAGE_BINHOST dans /etc/make.conf

PORTAGE_BINHOST="ftp://buildhost/gentoo"

Quand vous voulez utliser un paquet binaire pour installer une application, spécifiez l'option --getbinpkg en plus de --usepkg avec la commande emerge. La première option indique à Portage de télécharger le paquet binaire depuis le serveur que vous avez défini plus tôt et la seconde indique d'utiliser le même paquet binaire plutôt que de compiler l'application.

Par exemple, pour installer gnumeric à partir de paquets binaires précompilés :

Exemple de code 11 : Installer gnumeric en utilisant un paquet précompilé

# emerge --usepkg --getbinpkg gnumeric

La page man de emerge décrit l'utilisation des paquets précompilés plus en détail.

Exemple de code 12 : Lire la page man de emerge

$ man emerge

3.e. Récupération des fichiers

Récupération en parallèle

Quand vous installez une série de paquets, Portage peut commencer la récupération des sources du paquet suivant dans la liste pendant qu'il en compile un autre, réduisant ainsi la durée de l'installation. Pour activer cette option, ajoutez « parallel-fetch » à la variable FEATURES.

Userfetch : récupération en tant qu'utilisateur normal

Quand Portage est lancé par le super-utilisateur, l'option FEATURES="userfetch" autorise Portage à rendre les privilèges du super-utilisateur pendant qu'il récupère les sources du paquet. Ceci est une légère amélioration en termes de sécurité.


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


Imprimer

Dernière mise à jour le 2 juin 2007

Résumé : Découvrez les fonctions de Portage telles que le support pour la compilation distribuée, ccache et bien d'autres encore.

Sven Vermeulen
Auteur

Grant Goodyear
Auteur

Roy Marples
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

Joshua Saddler
Correcteur

Gerald J. Normandin Jr.
Relecteur

Donnie Berkholz
Relecteur

Ken Nowack
Relecteur

Lars Weiler
Contributeur

Xavier Neys
Correcteur, traducteur

Camille Huot
Traducteur

Benjamin Girault
Traducteur

Olivier Fisette
Traducteur

Olivier Roomans
Traducteur

Vincent Strubel
Traducteur

Donate to support our development efforts.

Gentoo Centric Hosting: vr.org

VR Hosted

Tek Alchemy

Tek Alchemy

SevenL.net

SevenL.net

php|architect

php|architect

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