Installer et gérer des logiciels à partir du source en utilisant GNU Stow sous Linux
Lorsque vous installez un logiciel à partir du code source, il finit souvent dans différents répertoires de votre système (comme /usr/local/bin, /usr/local/lib, etc.).
Avec le temps, gérer ces fichiers peut devenir une corvée, surtout si vous souhaitez supprimer ou mettre à jour un paquet. GNU Stow résout ce problème en organisant les installations de logiciels de manière propre et maintenable.
Dans ce tutoriel détaillé, nous allons expliquer ce qu'est GNU Stow et comment utiliser GNU Stow pour installer et gérer des logiciels à partir du code source de manière efficace et organisée sous Linux.
Qu'est-ce que GNU Stow ?
GNU Stow est un gestionnaire de ferme de liens symboliques qui aide à gérer l'installation de paquets logiciels sur les systèmes Linux et de type Unix. Il utilise des liens symboliques pour simplifier la gestion des logiciels installés à partir du code source.
Le but principal de GNU Stow est d'aider à organiser les fichiers et les répertoires d'une manière qui permet une gestion et un entretien faciles.
Il fonctionne en créant des liens symboliques dans un répertoire parent vers les fichiers et répertoires des paquets installés.
Cette approche permet à plusieurs packages de coexister dans le même répertoire sans interférer les uns avec les autres, car les fichiers de chaque package sont conservés séparément et sont reliés en place selon les besoins.
GNU Stow est particulièrement populaire parmi les utilisateurs qui préfèrent gérer eux-mêmes leurs installations et configurations logicielles, car il offre un moyen propre et efficace de tout garder organisé.
Il est également couramment utilisé en conjonction avec des systèmes de contrôle de version pour gérer les fichiers de configuration et d'autres ressources qui doivent être partagés entre différentes machines ou environnements.
GNU Stow est un outil libre et open-source, et fait partie du projet GNU.
Comment fonctionne GNU Stow
Stow suppose que chaque paquet logiciel est stocké dans son propre répertoire. Par exemple, vous pourriez avoir /usr/local/stow/package1 et /usr/local/stow/package2.
Lorsque vous "rangez" un paquet, Stow crée des liens symboliques depuis le répertoire du paquet vers les emplacements appropriés dans votre système de fichiers. Par exemple, il pourrait lier /usr/local/stow/package1/bin/program à /usr/local/bin/program.
Pour installer un paquet, vous naviguez vers le répertoire contenant les répertoires gérés par stow et exécutez stow package1. Cela crée les liens symboliques nécessaires. Pour désinstaller, vous exécutez stow -D package1, ce qui supprime les liens.
Fonctionnalités de GNU Stow
Les fonctionnalités clés de GNU Stow incluent :
- Liens symboliques : Stow crée des liens symboliques vers les fichiers et répertoires de chaque paquet, pointant vers leurs emplacements réels. Cela garantit que les fichiers semblent être au bon endroit sans y être réellement, ce qui aide à éviter les conflits entre différents paquets.
- Gestion des paquets : Il est utile pour gérer les logiciels installés dans des répertoires spécifiques à l'utilisateur ou dans tout le système, en particulier lorsqu'il s'agit de fichiers de configuration ou de scripts qui doivent se trouver à des emplacements spécifiques.
- Mises à niveau et suppressions faciles : Mettre à niveau ou supprimer un paquet géré par Stow est simple, car cela implique simplement de mettre à jour ou de supprimer le répertoire du paquet. Stow met automatiquement à jour ou supprime les liens symboliques correspondants.
- Configuration flexible : Les utilisateurs peuvent configurer Stow selon leurs besoins, y compris en spécifiant le répertoire cible pour les liens et en gérant différents types de fichiers.
Avantages
Utiliser GNU Stow dans votre flux de travail apporte les trois principaux avantages suivants :
1. Simplifie la gestion des paquets:
Vous pouvez facilement installer, mettre à jour et supprimer des paquets logiciels. Vous pouvez même installer plusieurs versions du même paquet à partir du source.
2. Évite les conflits:
Puisque chaque paquet se trouve dans son propre répertoire, il y a moins de risques de conflits de fichiers.
3. Reproductibilité:
Facilite la reproduction et la documentation de l'environnement logiciel.
Cas d'utilisation
GNU Stow est utile pour les développeurs qui compilent et installent régulièrement des logiciels à partir du code source. Il est également pratique pour gérer les fichiers de configuration (dotfiles), car il peut maintenir une configuration cohérente sur différents systèmes.
Usage général
Pour installer un paquet :
cd /usr/local/stow
stow package1Pour désinstaller un paquet :
cd /usr/local/stow
stow -D package1En utilisant GNU Stow, vous pouvez garder votre système organisé et réduire la complexité de la gestion des installations de logiciels.
Installer un logiciel à partir du code source en utilisant GNU Stow
À des fins de démonstration, nous verrons comment installer la dernière version de curl en utilisant GNU Stow sur un système Linux.
1. Mettez à jour votre système:
Assurez-vous que la base de données des paquets de votre système est à jour.
sudo apt update # For Debian/Ubuntu-based systems
sudo yum update # For CentOS/RHEL systems
sudo dnf update # For Fedora systems
sudo pacman -Syu # For Arch Linux systems2. Installer les outils de développement requis:
Installez les outils de développement nécessaires s'ils ne sont pas déjà installés.
sudo apt install build-essential # Debian/Ubuntu
sudo yum groupinstall "Development Tools" # CentOS/RHEL
sudo dnf groupinstall "Development Tools" # Fedora
sudo pacman -S base-devel # Arch LinuxVous devrez également installer les bibliothèques de développement OpenSSL si vous souhaitez compiler curl avec le backend OpenSSL. Par exemple, sur les systèmes basés sur Debian, vous pouvez installer les bibliothèques de développement OpenSSL en utilisant la commande :
sudo apt install libssl-devSi vous voulez compiler curl avec le backend GnuTLS, installez ce qui suit sur un système basé sur Debian :
sudo apt install libgnutls28-dev libgnutls303. Installer GNU Stow:
Assurez-vous que GNU Stow est installé.
sudo pacman -S stow # Arch Linux
sudo apt install stow # Debian/Ubuntu
sudo yum install stow # Older CentOS/RHEL
sudo dnf install stow # Latest Fedora/RHEL/AlmaLinux/Rocky Linux4. Télécharger et extraire le code source de curl :
Téléchargez le dernier code source de Curl depuis sa page officielle des releases et extrayez-le.
wget https://github.com/curl/curl/releases/download/curl-8_8_0/curl-8.8.0.tar.gz
tar xvf curl-8.8.0.tar.gz5. Configurez la construction avec le préfixe:
Cd dans le répertoire extrait :
cd curl-8.8.0Configurez la construction avec le backend TLS et le répertoire d'installation à gérer par GNU Stow.
./configure --with-ssl --prefix=/usr/local/stow/curl-8.8.0Si vous voulez configurer Curl avec GnuTLS, utilisez plutôt cette commande :
./configure --with-gnutls --prefix=/usr/local/stow/curl-8.8.06. Compiler le logiciel:
make7. Installer le logiciel:
sudo make install8. Utilisez GNU Stow pour gérer l'installation:
Changez pour le répertoire stow et utilisez stow pour gérer l'installation.
cd /usr/local/stow
sudo stow curl-8.8.09. Vérifiez l'installation:
Vérifiez que Curl est correctement installé et accessible.
curl --versionExemple de sortie :
curl 8.8.0 (x86_64-pc-linux-gnu) libcurl/8.8.0 OpenSSL/1.1.1w zlib/1.2.11
Release-Date: 2024-05-22
Protocols: dict file ftp ftps gopher gophers http https imap imaps ipfs ipns mqtt pop3 pop3s rtsp smb smbs smtp smtps telnet tftp
Features: alt-svc AsynchDNS HSTS HTTPS-proxy IPv6 Largefile libz NTLM SSL threadsafe TLS-SRP UnixSocketsEn suivant ces étapes, vous aurez installé la dernière version de curl en utilisant GNU Stow, garantissant une installation propre et organisée.
Mettre à jour le logiciel à partir d'une version plus ancienne
Pour mettre à jour d'une version antérieure de Curl (par exemple, 8.7.1) vers la dernière version (par exemple, 8.8.0) en utilisant GNU Stow, vous pouvez suivre ces étapes :
1. Désinstaller l'ancienne version :
Tout d'abord, vous devez désinstaller l'ancienne version de Curl. Comme vous l'avez installé en utilisant GNU Stow, vous pouvez simplement le désinstaller avec Stow.
cd /usr/local/stow
sudo stow -D curl-8.7.1Puis, retournez dans votre répertoire personnel :
cd2. Téléchargez et extrayez le code source le plus récent de Curl :
Téléchargez la dernière version de Curl et extrayez-la.
wget https://github.com/curl/curl/releases/download/curl-8_8_0/curl-8.8.0.tar.gz
tar -xzf curl-8.8.0.tar.gz
cd curl-8.8.03. Configurer et compiler la dernière version de Curl :
Configurez l'environnement de build et compilez la dernière version de Curl.
./configure --with-ssl --prefix=/usr/local/stow/curl-8.8.0
[or]
./configure --with-gnutls --prefix=/usr/local/stow/curl-8.8.0
make
sudo make install4. Utilisez GNU Stow pour gérer la nouvelle installation :
cd /usr/local/stow
sudo stow curl-8.8.05. Vérifiez la mise à jour :
Vérifiez que la dernière version de Curl est correctement installée et accessible.
curl --version6. Supprimez l'ancienne version (facultatif):
Alors que GNU Stow va désassocier l'ancienne version, il ne supprimera pas l'ancien répertoire. Pour supprimer complètement l'ancienne version de Curl après l'installation de la nouvelle :
sudo rm -rf /usr/local/stow/curl-8.7.1Ce processus garantit que vous pouvez facilement gérer et mettre à jour plusieurs versions de Curl en utilisant GNU Stow, ce qui rend pratique le passage d'une version à une autre si nécessaire.
Utilisation avancée de GNU Stow
GNU Stow offre plusieurs options et fonctionnalités avancées qui peuvent améliorer son utilité et sa flexibilité. En voici quelques-unes :
1. Packages Relocables:
Stow vous permet de créer des packages qui peuvent être déplacés sans en changer le contenu. Cela signifie que le même package peut être placé à différents endroits sans modifier les fichiers.
Vous pouvez utiliser les options --dir et --target pour spécifier le répertoire source des paquets et le répertoire cible où les liens symboliques doivent être créés.
Exemple:
stow --dir=/path/to/packages --target=/usr/local package_name2. Simulation des opérations de stockage:
Avant d'apporter des changements réels, vous pouvez simuler des opérations de stockage pour voir ce qui se passerait. Cela aide à éviter les erreurs.
Nous pouvons utiliser l'option -n ou --no pour effectuer une simulation à sec.
Exemple:
stow -n package_name3. Sortie Verbeuse:
Obtenez des informations détaillées sur ce que fait stow. Cela peut être utile pour le débogage ou pour comprendre les actions effectuées.
Utilisez l'option -v ou --verbose pour afficher des informations détaillées.
Exemple:
stow -v package_name4. Ignorer les fichiers et les répertoires:
Vous pouvez dire à Stow d'ignorer certains fichiers ou répertoires dans le paquet.
Créez un fichier .stow-local-ignore dans le répertoire du paquet en listant les fichiers ou répertoires à ignorer.
Exemple:
Créez un fichier .stow-local-ignore avec le contenu suivant :
.git
README.md5. Remettre en place et déstower:
Restow : Cette opération commence par déstocker le paquet, puis le stocke de nouveau. Elle est utile pour actualiser les liens symboliques après avoir modifié le contenu du paquet.
Utilisation:
stow -R package_nameDestow : Cette opération supprime les liens symboliques créés par stow.
Utilisation:
stow -D package_name6. Adoption de Fichiers Préexistants:
Stow peut adopter des fichiers qui existent déjà dans le répertoire cible. Cela est utile pour mettre des fichiers existants sous la gestion de stow sans avoir à les déplacer manuellement.
Utilisez l'option --adopt.
Exemple:
stow --adopt package_name7. Gestion des conflits:
Stow peut détecter et gérer les conflits entre les paquets.
Utilisez l'option --override pour écraser de force les fichiers existants.
Exemple:
stow --override package_name8. Répertoires de stockage personnalisés:
Vous pouvez spécifier des répertoires personnalisés pour stocker les paquets, ce qui permet une plus grande flexibilité dans l'organisation de votre logiciel.
Utilisez l'option --dir pour spécifier le répertoire source et --target pour spécifier le répertoire cible.
Exemple:
stow --dir=/custom/source --target=/custom/target package_namePour une liste complète des options, vous pouvez vous référer à la page de manuel stow :
man stowExemple : Utilisation de plusieurs options
Voici un exemple qui combine plusieurs options avancées :
stow --dir=/path/to/packages --target=/usr/local --verbose --no --adopt --override package_nameVoici une répartition de chaque option :
--dir: Spécifie le répertoire source du paquet.--target: Spécifie le répertoire cible pour les liens symboliques.--verbose: Fournit une sortie détaillée de l'opération.--no: Effectue une exécution à blanc pour simuler l'opération.--adopt: Adopte les fichiers préexistants dans le répertoire cible.--override: Écrase de force les fichiers existants.
Fiche de référence GNU Stow
1. Ranger un colis:
stow package_nameCrée des liens symboliques pour package_name dans le répertoire parent.
2. Déballer un colis:
stow -D package_nameSupprime les liens symboliques pour package_name.
3. Replacer un paquet:
stow -R package_nameDéplace puis remet en place package_name.
4. Spécifiez le répertoire source:
stow --dir=/path/to/packages package_nameDéfinit le répertoire source où se trouvent les packages.
5. Spécifiez le répertoire cible:
stow --target=/path/to/target package_nameDéfinit le répertoire cible où les liens symboliques doivent être créés.
6. Simuler l'opération (exécution à blanc):
stow -n package_nameEffectue une simulation sans apporter de modifications.
7. Sortie verbeuse:
stow -v package_nameFournit une sortie détaillée de l'opération.
8. Adopter des fichiers préexistants:
stow --adopt package_nameAdopte les fichiers existants dans le répertoire cible.
9. Forcer le remplacement des conflits :
stow --override package_nameRemplace les fichiers existants dans le répertoire cible.
10. Ignorer des fichiers ou des répertoires spécifiques:
Créez un fichier .stow-local-ignore dans le répertoire du paquet avec les fichiers ou répertoires à ignorer.
Exemple de contenu .stow-local-ignore :
.git
README.md11. Stocker un paquet depuis un répertoire personnalisé vers une cible personnalisée:
stow --dir=/path/to/packages --target=/path/to/target package_name12. Déstower un paquet et supprimer son répertoire:
stow -D package_name
sudo rm -rf /usr/local/stow/package_name13. Réenregistrer un paquet avec sortie détaillée:
stow -Rv package_name14. Adopter des fichiers existants dans la gestion Stow:
stow --adopt package_name15. Exécution à blanc pour vérifier ce qui se passerait:
stow -n package_nameRésumé des options
-D/--delete: Défait l'installation d'un paquet en supprimant ses liens symboliques.-R/--restow: Défait et refait le rangement d'un paquet.-n/--no: Exécution à sec (simuler l'opération).-v/--verbose: Sortie détaillée.--dir: Spécifiez le répertoire source.--target: Spécifiez le répertoire cible.--adopt: Adopter des fichiers préexistants.--override: Forcer l'écrasement des fichiers existants.
Exemple de flux de travail
1. Ranger un nouveau colis :
cd /usr/local/stow
sudo stow package_name2. Déstower un ancien paquet et supprimer son répertoire:
sudo stow -D old_package_name
sudo rm -rf /usr/local/stow/old_package_name3. Replacer un colis après avoir effectué des modifications:
cd /usr/local/stow
sudo stow -R package_name4. Adopter les fichiers existants dans le répertoire cible:
cd /usr/local/stow
sudo stow --adopt package_name5. Simuler le rangement d'un colis pour vérifier les erreurs:
cd /usr/local/stow
stow -n package_nameQuestions Fréquemment Posées
Q : Qu'est-ce que GNU Stow ?
A : GNU Stow est un outil pratique pour Linux qui vous aide à gérer les logiciels que vous compilez à partir du code source. Au lieu d'installer directement le logiciel dans des répertoires système comme /usr/local, Stow permet de garder les choses organisées en :
- Stocker le logiciel dans son propre répertoire : Cela empêche les conflits avec d'autres programmes et garde votre système propre.
- Créer des liens symboliques : Ces liens agissent comme des raccourcis, pointant vers les fichiers de programme réels dans leurs répertoires séparés. De votre point de vue, le logiciel semble installé normalement, mais Stow gère les liens en arrière-plan.
Q : Comment installer GNU Stow ?
A : GNU Stow peut généralement être installé via le gestionnaire de paquets de votre distribution. Par exemple, sur les systèmes basés sur Debian, vous pouvez l'installer en utilisant :
sudo apt-get install stowSur les systèmes basés sur Red Hat, vous pouvez utiliser :
sudo dnf install stowQ : Comment utiliser GNU Stow pour gérer des paquets ?
A : Pour utiliser GNU Stow, vous devez d'abord installer votre logiciel dans une structure de répertoires que Stow peut gérer. Par exemple, si vous avez un paquet dans /usr/local/stow/mypackage, vous pouvez le faire apparaître dans /usr/local en exécutant :
cd /usr/local/stow
sudo stow mypackageQ : Comment puis-je gérer plusieurs versions du même logiciel avec GNU Stow ?
A : Vous pouvez installer chaque version du logiciel dans son propre répertoire sous le répertoire Stow (par exemple, /usr/local/stow/mypackage-1.0 et /usr/local/stow/mypackage-2.0). Pour passer d'une version à l'autre, il suffit de désinstaller la version actuelle et d'installer la version souhaitée :
cd /usr/local/stow
sudo stow -D mypackage-1.0 # Unstow version 1.0
sudo stow mypackage-2.0 # Stow version 2.0Q : Que se passe-t-il en cas de conflits ou de chevauchements entre les packages ?
A : GNU Stow vous avertira s'il y a des conflits ou des chevauchements entre les paquets que vous essayez de stower. Vous pouvez résoudre ces conflits en ajustant manuellement la structure des répertoires ou en utilisant l'option --adopt pour permettre à Stow de prendre la propriété des fichiers en conflit.
Q : Comment désinstaller un paquet géré par GNU Stow ?
A : Pour désinstaller un paquet, vous devez simplement le désinstaller :
cd /usr/local/stow
sudo stow -D mypackageCela supprimera les liens symboliques créés par Stow, désinstallant effectivement le paquet.
Q : Puis-je utiliser un répertoire différent pour Stow ?
A : Oui, vous pouvez spécifier un répertoire différent pour Stow en utilisant l'option -d. Par exemple, si vous voulez utiliser /opt/stow comme répertoire Stow, vous pouvez exécuter :
sudo stow -d /opt/stow mypackageQ : Existe-t-il des options ou fonctionnalités avancées dans GNU Stow ?
A : Oui, GNU Stow possède plusieurs options avancées, notamment :
--ignore=PATTERN: Ignorer les fichiers correspondant à un motif spécifique.--defer=PATTERN: Reporter le traitement des fichiers correspondant à un certain motif.--adopt: Adopter des fichiers existants dans le paquet Stow.--no-folding: Désactiver le pliage des répertoires.
Q : Que dois-je faire si GNU Stow ne fonctionne pas comme prévu ?
A : Si vous rencontrez des problèmes, vous pouvez vérifier ce qui suit :
- Assurez-vous que les répertoires que vous gérez avec Stow sont correctement structurés.
- Vérifiez qu'il n'y a pas de problèmes de permissions en exécutant Stow avec des privilèges élevés (
sudo). - Vérifiez la sortie de Stow pour détecter tout avertissement ou erreur.
- Consultez la page de manuel
stowou la documentation GNU Stow pour obtenir des conseils supplémentaires.
Points clés
GNU Stow est un outil utile pour gérer les installations et les configurations de logiciels.
- GNU Stow est un gestionnaire de fermes de liens symboliques gratuit et open source.
- Il est principalement utilisé pour gérer l'installation des paquets logiciels, en les gardant organisés dans des répertoires séparés.
- Stow crée des liens symboliques à partir d'un répertoire central (généralement
/usr/local/stow) vers les emplacements appropriés dans l'arborescence des répertoires du système. - C'est particulièrement utile pour gérer les fichiers de configuration et suivre les installations de logiciels personnalisés.
- Stow permet une gestion facile des paquets, l'installation et la suppression sans mélanger les fichiers de différents paquets.
Conclusion
GNU Stow fournit une solution conviviale pour gérer les logiciels que vous compilez vous-même sous Linux. Il élimine les tracas liés aux fichiers dispersés et simplifie le processus de mise à jour et de suppression.
En créant des liens symboliques, Stow garde votre système organisé et vous permet de passer d'une version de logiciel à une autre sans effort. Stow est très utile pour les développeurs et les testeurs qui installent souvent des logiciels depuis la source sous Linux.
Si vous cherchez un moyen de rationaliser votre flux de travail avec des programmes construits à partir du source, GNU Stow est un outil précieux à ajouter à votre boîte à outils Linux.
Ressources :
- Site Web de GNU Stow
- Documentation de GNU Stow
Lecture suggérée :
- Comment supprimer des programmes installés depuis la source en utilisant GNU Stow sous Linux
- Comment trouver et supprimer les paquets inutilisés sous Linux
Image mise en avant par GrumpyBeere de Pixabay.
