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/portage/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.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 1.2 : Afficher les fonctionnalités déjà activées

$ 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 sur 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 2.1 : Installer distcc

# emerge distcc

Activer le support distcc pour Portage

Ajoutez le mot-clé distcc à la variable FEATURES du fichier /etc/portage/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 2.2 : 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 2.3 : 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. Cepedant, la première fois que vous compilerez avec le cache, ce sera plus lent qu'une compilation normale. Les compilations ultérieures seront quant à elles beaucoup plus rapdes. ccache n'est utile si vous devez recompiler la même applications de nombreuses fois; par conséquent cette fonctionnalité s'adresse surtout aux développeurs.

Si vous êtes intéressé par les tenants et aboutissants de ccache, veuillez visiter le site de ccache.

Attention : ccache est connu comme engendrant de nombreuses erreurs de compilation. Dans certains cas il retient des morceaux de code périmés ou corrompus qui peuvent rendre les paquets non compilables. Dans une telle situation (si vous avez des messages d'erreurs tels que "File not recognized: File truncated"), essayez de recompiler l'application en désactivant (FEATURES="-ccache" dans /etc/portage/make.conf) avant de rapporter un bogue. Sauf si vous êtes développeur n'activez pas ccache.

Installation de ccache

Utilisez la commande emerge ccache pour installer ccache :

Exemple de code 3.1 : Installer ccache

# emerge ccache

Activer le support ccache pour Portage

Ajoutez le mot-clé ccache à la variable FEATURES du fichier /etc/portage/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 3.2 : Editer CCACHE_SIZE dans /etc/portage/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 3.3 : 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/portage/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 3.4 : 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/portage/make.conf.

Vous trouverez plus de détails à propos de la création de paquets binaires dans la documentation de catalyst (en anglais) : 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 4.1 : 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 4.2 : 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 4.3 : 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 à abandonnerles 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é.

3.f. Extraction d'instantanés validés de l'arbre Portage

En tant qu'administrateur, vous pouvez décider de ne mettre à jour votre arbre Portage qu'à partir des instantanés cryptés de l'arbre Portage validés par Gentoo.org. Ceci permet de garantir qu'un mirroir rsync malhonnête n'a pas ajouté de code ou de paquet indésirable dans l'arbre que vous téléchargez.

Pour configurer Portage, commencez par créer un dépôt de confiance duquel vous téléchargez et acceptez les clés de Gentoo.org servant à signer les instantanés. Bien-sûr, si vous le souhaitez, vous pouvez valider ces clés GPG en suivant les conseils de la page GnuPG. (comme celui de vérifier l'empreinte de la clé). La liste des clés GPG utilisées par la Release Engineering team est disponible sur leur page de projet Release engineering.

Exemple de code 6.1 : créer un dépôt de confiance pour Portage

# mkdir -p /etc/portage/gpg
# chmod 0700 /etc/portage/gpg
(... Remplacez les clés par celles mentionnées sur le site   release engineering ...)
# gpg --homedir /etc/portage/gpg --keyserver subkeys.pgp.net --recv-keys 0xDB6B8C1F96D8BF6D
# gpg --homedir /etc/portage/gpg --edit-key 0xDB6B8C1F96D8BF6D trust

Ensuite, éditez /etc/portage/make.conf et activez la prise en charge pour la validation des instantanés signés de l'arbre de Portage (en utilisant FEATURES="webrsync-gpg") et en désactivant la mise à jour de l'arbre de Portage tree par la méthode régulière de la commande emerge --sync.

Exemple de code 6.2 : Mise à jour de make.conf

FEATURES="webrsync-gpg"
PORTAGE_GPG_DIR="/etc/portage/gpg"

Exemple de code 6.3 : Mise à jour de repos.conf

# Assurez-vous que  sync-type et sync-uri sont exclues par  la marque des commentaires
# sync-type = rsync
# sync-uri = ...

Voilà ! La prochaine fois que vous lancerez emerge-webrsync, seuls les instantanés dûment signés seront déployés sur votre système.


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


Imprimer

Voir tout

Dernière mise à jour le 1er juin 2014

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

Gerald J. Normandin Jr.
Relecteur

Donnie Berkholz
Relecteur

Ken Nowack
Relecteur

Joshua Saddler
Relecteur

Lars Weiler
Contributeur

Xavier Neys
Correcteur, traducteur

Camille Huot
Traducteur

Benjamin Girault
Traducteur

Olivier Fisette
Traducteur

Olivier Roomans
Traducteur

Vincent Strubel
Traducteur

José Fournier
Traducteur

Donate to support our development efforts.

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