La construction depuis les sources peut fournir une version ou une fonctionnalité absente des dépôts configurés, mais elle vous transfère le travail d’intégration, de mise à jour et de confiance normalement assuré par la distribution. Préférez un paquet pris en charge par la distribution lorsqu’il répond au besoin.
Packages · Leçon 7
Compiler le code source
Découvrez comment vérifier, configurer, construire, tester, préparer et suivre un logiciel compilé depuis son code source.
Vérifier et lire avant de construire
Obtenez le code source depuis le canal authentifié de publication du projet en amont. Vérifiez sa signature ou sa somme de contrôle par une voie de confiance, puis examinez l’archive avant de l’extraire dans un répertoire intermédiaire sans privilèges. Lisez les fichiers tels que README, INSTALL, SECURITY et la documentation de construction du projet.
Les instructions de construction sont du code exécutable. Un script configure, une définition de construction, un test ou un greffon de compilateur peut exécuter des commandes arbitraires en tant que votre utilisateur. Ne construisez pas de code source non fiable et n’exécutez pas la construction elle-même avec sudo.
Pourquoi l’étape de compilation doit-elle normalement s’exécuter sans sudo ?
Installer les prérequis de construction
Sur un système de développement de la famille Debian, un point de départ courant est :
$ sudo apt install build-essential
Cette commande installe un compilateur de base et des outils de construction, mais pas toutes les dépendances nécessaires à chaque projet. Les projets peuvent aussi exiger des environnements d’exécution de langages, des générateurs, des outils de systèmes de construction, des en-têtes de développement ou des versions précises de bibliothèques. Installez les prérequis depuis des dépôts de confiance et distinguez les dépendances de construction de celles nécessaires à l’exécution.
Que fournit build-essential sur un système de la famille Debian ?
Configurer et construire
Un projet traditionnel de style Autoconf emploie :
$ ./configure --prefix=/usr/local
$ make
configure examine l’environnement et génère les fichiers de construction selon les options choisies. make lit les règles de dépendances et de commandes, généralement dans un Makefile, puis crée les cibles demandées.
Cette séquence n’est pas universelle. Les projets peuvent employer CMake, Meson, Ninja, des outils propres à un langage ou des scripts personnalisés. Suivez la documentation de la version exacte au lieu d’exécuter ./configure uniquement par habitude. Un répertoire de construction distinct de l’arborescence source peut isoler les fichiers générés lorsque le système de construction le permet.
Dans la procédure traditionnelle, que fait make ?
Tester avant l’installation
Exécutez la cible de test documentée par le projet, par exemple :
$ make check
La cible réelle peut être test, check ou une commande distincte. Analysez les échecs au lieu d’installer un résultat non testé. Les tests peuvent nécessiter un accès réseau, des services, du matériel particulier ou une isolation ; examinez-les avant leur exécution comme tout autre code de construction.
Que faut-il faire lorsque la suite de tests documentée échoue ?
Préparer et suivre l’installation
sudo make install peut copier directement des fichiers dans les préfixes système sans les enregistrer dans la base native des paquets. Les cibles de désinstallation sont facultatives et parfois incomplètes, tandis que des mises à niveau ultérieures peuvent écraser ou abandonner des fichiers.
Préférez l’une de ces méthodes contrôlées :
- construire un paquet natif officiel avec les outils de la distribution ;
- installer sous un préfixe clairement séparé tel que
/usr/locallorsque la politique le permet ; - préparer les fichiers dans une racine de paquet temporaire avec un mécanisme pris en charge tel que
DESTDIR; - employer un préfixe utilisateur sans privilèges, un environnement isolé ou un conteneur selon le besoin.
checkinstall peut créer un paquet simple pour certaines procédures make install, mais il n’est pas universel et ne remplace pas une recette de paquet de qualité, examinée pour la distribution. Ne le considérez jamais comme une règle absolue. Avant toute copie privilégiée, examinez la liste des fichiers préparés, leur propriété, leurs permissions, leurs chemins ainsi que le plan de désinstallation ou de mise à niveau.
Quel est le but d’une installation intermédiaire prise en charge avec DESTDIR ?
Utilisez Construire un logiciel depuis le code source sous Linux dans un environnement jetable pour vous exercer sans mélanger des fichiers expérimentaux à un système de production.
Leçon terminée
Vous avez terminé Compiler le code source
Vous savez maintenant traiter la construction depuis les sources comme une chaîne d’approvisionnement logicielle contrôlée.
Authentifier la source et considérer ses instructions comme du code exécutable à examiner.
Installer les prérequis explicites depuis des dépôts de confiance.
Configurer, construire et tester sans privilèges inutiles.
Préparer et examiner les résultats avant l’installation système.
Suivre les fichiers installés au moyen d’un paquet natif ou d’un préfixe isolé choisi délibérément.
Conservez votre progression
Créez un compte gratuit pour enregistrer cette leçon et continuer sur n'importe quel appareil.
Créer un compte gratuit