Introduction
Dans ce laboratoire, vous apprendrez le processus fondamental de compilation et d'installation de logiciels à partir de leur code source sur un système Linux. Il s'agit d'une compétence cruciale pour gérer des applications qui ne sont pas disponibles dans le gestionnaire de paquets de votre distribution ou lorsque vous devez activer des fonctionnalités personnalisées spécifiques. Vous travaillerez sur un exemple concret, le serveur Pure-FTPd, pour comprendre chaque étape du flux de travail d'installation à partir des sources.
Vous commencerez par extraire le code source d'une archive compressée, communément appelée « tarball », à l'aide de la commande tar. Ensuite, vous préparerez l'environnement de compilation en exécutant le script ./configure, puis vous compilerez le code source en programmes exécutables avec la commande make. Après une compilation réussie, vous installerez le logiciel à l'échelle du système en utilisant make install. Enfin, vous apprendrez à désinstaller correctement le logiciel et à nettoyer les fichiers sources, complétant ainsi le cycle de vie complet d'une installation à partir du code source.
Extraire le code source avec tar
Dans cette étape, vous apprendrez à extraire une archive de code source, communément appelée « tarball », à l'aide de la commande tar. Le code source des logiciels est souvent distribué dans des fichiers d'archive compressés comme .tar.gz afin de regrouper tous les fichiers nécessaires et de réduire la taille globale du fichier.
Tout d'abord, vérifions que l'archive du code source est disponible dans notre répertoire de travail actuel, ~/project. Utilisez la commande ls -l pour lister les fichiers et leurs détails.
ls -l
Vous devriez voir le fichier pure-ftpd-1.0.53.tar.gz dans la sortie.
total 748
-rw-r--r-- 1 labex labex 765432 Nov 10 12:00 pure-ftpd-1.0.53.tar.gz
Maintenant, nous allons utiliser la commande tar pour extraire le contenu de cette archive. Les options que nous utiliserons sont :
-x: pour extraire les fichiers d'une archive.-z: pour décompresser l'archive en utilisant gzip, ce qui est indiqué par l'extension.gz.-v: pour un mode verbeux, qui liste tous les fichiers au fur et à mesure de leur extraction.-f: pour spécifier le filename (nom de fichier) de l'archive à traiter.
Exécutez la commande suivante dans votre terminal pour extraire l'archive :
tar -zxvf pure-ftpd-1.0.53.tar.gz
L'option -v demandera à tar d'afficher le nom de chaque fichier extrait. La sortie sera assez longue, mais elle devrait ressembler à l'exemple ci-dessous, montrant la structure des répertoires et les fichiers créés.
pure-ftpd-1.0.53/
pure-ftpd-1.0.53/AUTHORS
pure-ftpd-1.0.53/README
pure-ftpd-1.0.53/README.LDAP
pure-ftpd-1.0.53/README.MySQL
pure-ftpd-1.0.53/README.PGSQL
...
pure-ftpd-1.0.53/src/puredb_p.h
pure-ftpd-1.0.53/src/pure-quotacheck.c
pure-ftpd-1.0.53/src/pure-uploadscript.c
Une fois la commande terminée, un nouveau répertoire contenant le code source aura été créé. Utilisons à nouveau ls -l pour voir ce nouveau répertoire.
ls -l
Vous devriez maintenant voir le répertoire pure-ftpd-1.0.53 aux côtés de l'archive originale.
total 752
drwxr-xr-x 10 labex labex 4096 Nov 10 12:05 pure-ftpd-1.0.53
-rw-r--r-- 1 labex labex 765432 Nov 10 12:00 pure-ftpd-1.0.53.tar.gz
Vous avez extrait avec succès le code source de l'archive. À l'étape suivante, nous naviguerons dans ce nouveau répertoire pour commencer le processus de configuration et de compilation.
Configurer et compiler le logiciel avec ./configure et make
Dans cette étape, vous configurerez le code source pour votre système spécifique, puis vous le compilerez en programmes exécutables. Il s'agit d'un processus standard en deux parties pour compiler des logiciels à partir des sources sur les systèmes Linux.
Tout d'abord, vous devez vous déplacer dans le répertoire qui a été créé à l'étape précédente. Utilisez la commande cd pour naviguer dans le répertoire pure-ftpd-1.0.53.
cd ~/project/pure-ftpd-1.0.53
Maintenant que vous êtes dans le répertoire du code source, la première partie du processus consiste à exécuter le script configure. Ce script vérifie que votre système dispose de tous les outils, bibliothèques et dépendances nécessaires pour compiler le logiciel. Il génère ensuite un Makefile, qui contient les instructions pour le processus de compilation.
Pour exécuter le script, vous devez taper ./ avant son nom. Cela indique au shell de chercher le script configure dans le répertoire actuel.
./configure
Le script effectuera une série de vérifications et vous verrez beaucoup de texte défiler. C'est normal. Une exécution réussie se terminera par un résumé, similaire à celui ci-dessous.
checking for a BSD-compatible install... /usr/bin/install -c
checking whether build environment is sane... yes
checking for a thread-safe mkdir -p... /usr/bin/mkdir -p
...
checking for OpenSSL... no
...
configure: creating ./config.status
config.status: creating Makefile
config.status: creating src/Makefile
config.status: creating man/Makefile
...
config.status: executing depfiles commands
Pure-FTPd has been configured.
Notez les lignes config.status: creating Makefile. Cela confirme que le Makefile a été créé avec succès.
La deuxième partie du processus consiste à compiler le code. La commande make lit le Makefile et exécute le compilateur (comme gcc) avec les options appropriées pour transformer le code source lisible par l'homme (fichiers .c) en fichiers binaires exécutables par la machine.
Maintenant, exécutez la commande make.
make
Ce processus peut prendre quelques instants. Vous verrez de nombreuses lignes de sortie au fur et à mesure que make invoque le compilateur pour chaque fichier source. C'est la compilation proprement dite qui se déroule.
(CDPATH="${ZSH_VERSION+.}:" && cd . && /bin/bash /home/labex/project/pure-ftpd-1.0.53/config/missing automake-1.15 --gnu src/Makefile)
...
gcc -g -O2 -Wall -W -Wshadow -Wcast-align -Wwrite-strings -Wmissing-prototypes -Wmissing-declarations -Wnested-externs -Winline -c pure-ftpd.c
...
gcc -g -O2 -Wall -W -Wshadow -Wcast-align -Wwrite-strings -Wmissing-prototypes -Wmissing-declarations -Wnested-externs -Winline -o pure-ftpd pure_ftpd-pure-ftpd.o pure_ftpd-log.o ...
...
make[1]: Leaving directory '/home/labex/project/pure-ftpd-1.0.53/src'
Une fois que la commande make se termine sans erreur, le logiciel est compilé avec succès. Les fichiers binaires sont maintenant prêts à être installés sur le système, ce que vous ferez à l'étape suivante.
Installer le logiciel avec make install
Dans cette étape, vous installerez le logiciel compilé sur votre système. Après avoir compilé le code source avec make, les fichiers binaires résultants et les autres composants nécessaires (comme la documentation et les fichiers de configuration) se trouvent toujours dans le répertoire du code source. La commande make install copie ces fichiers vers les emplacements standard du système afin que le logiciel puisse être exécuté depuis n'importe où.
Assurez-vous que vous êtes toujours dans le répertoire ~/project/pure-ftpd-1.0.53.
Le processus d'installation nécessite généralement l'écriture de fichiers dans des répertoires tels que /usr/local/bin et /usr/local/sbin, qui appartiennent à l'utilisateur root. Par conséquent, vous devez utiliser la commande sudo pour exécuter make install avec des privilèges administratifs.
Exécutez la commande suivante pour installer Pure-FTPd :
sudo make install
La commande make install lira le Makefile et exécutera les instructions d'installation. Vous verrez une sortie montrant les fichiers en cours de création et de copie dans les répertoires système.
make[1]: Entering directory '/home/labex/project/pure-ftpd-1.0.53/src'
/usr/bin/mkdir -p '/usr/local/sbin'
/usr/bin/install -c pure-ftpd pure-pw pure-pwconvert pure-authd pure-certd pure-uploadscript pure-quotacheck '/usr/local/sbin'
/usr/bin/mkdir -p '/usr/local/share/man/man8'
/usr/bin/install -c -m 644 ../man/pure-ftpd.8 ../man/pure-pw.8 ../man/pure-pwconvert.8 ../man/pure-authd.8 ../man/pure-certd.8 '/usr/local/share/man/man8'
make[1]: Leaving directory '/home/labex/project/pure-ftpd-1.0.53/src'
make[1]: Entering directory '/home/labex/project/pure-ftpd-1.0.53'
/usr/bin/mkdir -p '/usr/local/etc'
/usr/bin/install -c -m 644 pure-ftpd.conf '/usr/local/etc'
make[1]: Nothing to be done for 'install-data-am'.
make[1]: Leaving directory '/home/labex/project/pure-ftpd-1.0.53'
Le logiciel est maintenant installé. Un moyen simple de le vérifier est d'utiliser la commande which, qui recherche un exécutable dans le PATH du système et affiche son chemin complet.
which pure-ftpd
Si l'installation a réussi, vous devriez voir la sortie suivante, indiquant que l'exécutable pure-ftpd est maintenant situé dans un répertoire système standard.
/usr/local/sbin/pure-ftpd
Le logiciel étant installé, il est techniquement prêt à être configuré et utilisé. Cependant, pour cet exercice, l'étape suivante vous guidera à travers le processus de désinstallation.
Désinstaller le logiciel et nettoyer avec make uninstall et rm
Dans cette dernière étape, vous apprendrez à désinstaller correctement le logiciel que vous avez installé à partir des sources et à nettoyer les fichiers de compilation, ramenant ainsi votre système à son état d'origine. C'est une partie importante de la gestion manuelle des logiciels.
La plupart des paquets sources bien conçus qui utilisent un Makefile fournissent une cible uninstall. Cette cible est conçue pour inverser les actions de make install, en supprimant tous les fichiers qui ont été copiés dans les répertoires système.
Tout d'abord, assurez-vous que vous êtes toujours dans le répertoire ~/project/pure-ftpd-1.0.53. Tout comme le processus d'installation nécessitait des privilèges administratifs, la désinstallation en a également besoin. Utilisez sudo avec la commande make uninstall.
sudo make uninstall
Vous verrez une sortie indiquant que les fichiers sont supprimés des répertoires système où ils avaient été installés.
make[1]: Entering directory '/home/labex/project/pure-ftpd-1.0.53/src'
rm -f /usr/local/sbin/pure-ftpd /usr/local/sbin/pure-pw /usr/local/sbin/pure-pwconvert /usr/local/sbin/pure-authd /usr/local/sbin/pure-certd /usr/local/sbin/pure-uploadscript /usr/local/sbin/pure-quotacheck
rm -f /usr/local/share/man/man8/pure-ftpd.8 /usr/local/share/man/man8/pure-pw.8 /usr/local/share/man/man8/pure-pwconvert.8 /usr/local/share/man/man8/pure-authd.8 /usr/local/share/man/man8/pure-certd.8
make[1]: Leaving directory '/home/labex/project/pure-ftpd-1.0.53/src'
make[1]: Entering directory '/home/labex/project/pure-ftpd-1.0.53'
rm -f /usr/local/etc/pure-ftpd.conf
make[1]: Leaving directory '/home/labex/project/pure-ftpd-1.0.53'
Pour confirmer que le logiciel a été supprimé, vous pouvez utiliser à nouveau la commande which.
which pure-ftpd
Cette fois, la commande ne devrait produire aucune sortie, car l'exécutable pure-ftpd a été supprimé de /usr/local/sbin et ne peut plus être trouvé dans le PATH du système.
Maintenant que le logiciel est désinstallé, la dernière étape consiste à supprimer le répertoire du code source lui-même. Vous ne pouvez pas supprimer un répertoire alors que vous êtes à l'intérieur, donc revenez d'abord au répertoire racine de votre projet.
cd ~/project
Maintenant, utilisez la commande rm avec l'option -r (récursive) pour supprimer le répertoire pure-ftpd-1.0.53 et tout son contenu.
rm -r pure-ftpd-1.0.53
Cette commande ne produira aucune sortie si elle réussit. Vous pouvez vérifier sa suppression en listant le contenu du répertoire ~/project.
ls -l
Le répertoire pure-ftpd-1.0.53 a disparu, et seule l'archive originale subsiste.
total 748
-rw-r--r-- 1 labex labex 765432 Nov 10 12:00 pure-ftpd-1.0.53.tar.gz
Félicitations ! Vous avez terminé avec succès tout le processus de compilation de logiciels à partir des sources : extraction, configuration, compilation, installation et, enfin, désinstallation et nettoyage.
Résumé
Dans ce laboratoire, vous avez appris la procédure standard pour compiler et installer des logiciels à partir de leur code source sur un système Linux. Vous avez commencé par extraire une archive de code source compressée, également appelée tarball (.tar.gz), à l'aide de la commande tar. Après l'extraction, vous avez navigué dans le répertoire source pour exécuter le script ./configure, qui prépare le logiciel à la compilation en vérifiant les dépendances système et en créant un Makefile. Enfin, vous avez utilisé la commande make pour compiler le code source en binaires exécutables et make install pour copier le logiciel dans les répertoires système appropriés.
De plus, vous avez pratiqué la méthode appropriée pour supprimer le logiciel et nettoyer l'environnement de compilation. Vous avez appris à utiliser la commande make uninstall pour supprimer les fichiers installés du système. Pour terminer le processus de nettoyage, vous avez supprimé le répertoire du code source original à l'aide de la commande rm, garantissant ainsi que le système était revenu à son état précédent.



