Utiliser ebuild

Updated 24 Septembre 2019

emerge et ebuild

Le programme ebuild est une interface de bas niveau de Portage. Il permet d'effectuer des opérations sur les ebuilds. Ainsi, vous pouvez réaliser certaines étapes de l'installation manuellement.

ebuild est un outil destiné principalement aux développeurs. Des informations plus détaillées sont disponibles dans [le manuel du développeur] (http://www.gentoo.org/proj/en/devrel/handbook/handbook.xml). Ceci dit, nous expliquerons quelles instances ebuild sont invoquées par Portage à différents stades de l'installation et comment effectuer des interventions post-configuration, supportées par certains paquets.

Installation manuelle

Code source et sommes de contrôle

Chaque fois que vous lancez la commande ebuild pour un fichier ebuild, les sommes de contrôle de tous les fichiers concernés sont vérifiées pour voir si elles correspondent aux sommes de contrôle des fichiers figurant dans le Manifest ou dans le fichier files/digest-[HTML_REMOVED]-[HTML_REMOVED]. Cette vérification est effectuée une fois que le code source a été téléchargé.

Pour télécharger le code source avec ebuild, exécutez :

ebuild path/to/file-ebuild fetch

Si la somme de contrôle md5 ne correspond pas à celle précisée dans le fichier Manifest, ou si l'un des fichiers téléchargés ne correspond pas à la description figurant dans files/digest[HTML_REMOVED]+, vous recevrez un message d'erreur comme celui-ci :

!!! File is corrupt or incomplete. (Digests do not match)
>>> our recorded digest: db20421ce35e8e54346e3ef19e60e4ee
>>>  your file's digest: f10392b7c0b2bbc463ad09642606a7d6

Dans la ligne suivante, le fichier défectueux est surligné.

Si vous êtes sûr(e) et certain(e) que le code source téléchargé et le fichier ebuild sont exactement ce dont vous avez besoin, vous pouvez recréer les fichiers Manifest et digest-[HTML_REMOVED] à l'aide de la fonction digest de ebuild. Voilà comment sont créés les fichiers Manifest et Digest :

ebuild path/to/file-ebuild digestra

Extraire le code source

Pour décompresser le code source dans @/var/tmp/portage@ (ou tout autre répertoire spécifié dans make_conf), utilisez la fonction unpack de <[HTML_REMOVED]>. Pour extraire le code source :

ebuild path/to/file-ebuild unpack}

Cette commande exécutera la fonction src_unpack() de ebuild (qui par défaut décompresse simplement un fichier si la fonction src_unpack() n'a pas été définie). C'est également à ce moment-là que tous les correctifs nécessaires sont appliqués.

Compiler depuis le code source

L'étape suivante est la compilation. Pour compiler, la fonction src_compile() de votre ebuild sera utilisée. Une reconfiguration sera également effectuée, si nécessaire. Voilà comment compiler :

ebuild path/to/file-ebuild compile

Si vous souhaitez modifier les instructions de compilation, nous conseillons d'ajuster la fonction src_compile(). Mais il est également possible de faire croire à Portage que ebuild a terminé la compilation. Exécutez les commandes nécessaires manuellement et créez un fichier .compile vide dans le répertoire de travail :

touch .compiled

Déplacer des fichiers vers un emplacement temporaire

A l'étape suivante, vous devez rassembler tous les fichiers nécessaires dans un répertoire temporaire. Il contiendra tous les fichiers à intégrer dans le système de fichiers utilisé. Vous pouvez réaliser cette étape avec <[HTML_REMOVED]>> qui, à son tour, invoque la fonction src_install() de l'ebuild :

ebuild path/to/file-ebuild install

Déplacer les fichiers vers le système de fichiers actuel

La dernière étape consiste à déplacer tous les fichiers vers le système de fichiers d'exploitation et à les enregistrer dans Portage. Dans ebuild, cette étape est appelée qmerge. Elle comprend les actions suivantes :

  • la fonction pkg_preinst() est invoquée, le cas échéant
  • tous les fichiers sont copiés dans le système de fichiers effectif
  • et enregistrés par Portage
  • la fonction pkg_postinst() est invoquée, le cas échéant

Utilisez la fonction qmerge de ebuild pour effectuer cette étape :

ebuild path/to/file-ebuild qmerge

Nettoyage de fichiers temporaires

Vous pouvez supprimer les données temporaires avec la fonction clean de ebuild :

ebuild path/to/file-ebuild clean

Aller encore plus loin avec ebuild

Toutes les commandes relatives à l'installation

La fonction merge de ebuild vous permet d'extraire, de décompresser, de compiler, d'installer et de localiser en une seule fois :

ebuild path/to/file-ebuild merge

Configuration

Certaines applications fournissent des instructions sur la manière d'affiner la configuration du paquet installé. La validation de ces instructions peut nécessiter l'intervention de l'utilisateur et n'est donc pas automatique. Pour lancer la configuration, comme spécifié pour la fonction optionnelle config() de l'ebuild, utilisez la commande 'config' de ebuild. Voici un exemple de configuration :

ebuild path/to/file-ebuild config

Compilation RPM

Vous pouvez demander à Portage de créer un paquet binaire ou même un RPM à partir de votre ebuild, en utilisant les commandes package et rpm, respectivement. Ces deux commandes sont quelque peu différentes.

  • La commande +package est similaire à la commande "merge" à bien des égards, car elle se charge de toutes les étapes requises (extraction, décompression, compilation, installation) avant de créer un paquet.
  • La commande rpm permet de créer un paquet RPM à partir des fichiers générés par la fonction ebuild.

Exemples :

créant un paquet binaire compatible avec Portage :

ebuild path/to/file-ebuild package

créer un paquet RPM :

ebuild path/to/file-ebuild rpm

Cependant, le RPM résultant ne contiendra aucune information sur les dépendances détectées dans le fichier ebuild.

En savoir plus

Pour plus de détails sur Portage, l'outil ebuild et les scripts ebuild, reportez-vous aux pages man suivantes :

  • man portage - (Portage lui-même)
  • man emerge - (commande emerge)

man ebuild - (commande ebuild)

  • man 5 ebuild - (syntaxe des fichiers ebuild)

Pour plus d'informations sur les questions relatives au développement, consultez le [Manuel du développeur] (http://www.gentoo.org/proj/en/devrel/handbook/handbook.xml).