Comment utiliser GNU Stow pour gérer les programmes installés à partir de Source et DotFiles
Objectif
Gérer facilement les programmes installés à partir de Source et DotFiles à l'aide de GNU Stow
Exigences
- Autorisation
Difficulté
FACILE
Conventions
- # - Exige que les commandes Linux soient exécutées avec des privilèges racine
directement en tant qu'utilisateur root ou par utilisation de la commandesudo - $ - Exige que les commandes Linux soient exécutées en tant qu'utilisateur régulier non privilégié
Présentation
Parfois, nous devons installer des programmes de Source: peut-être qu'ils ne sont pas disponibles via des canaux standard, ou peut-être que nous voulons une version spécifique d'un logiciel. GNU Stow est un très beau programme Symlinks Factory qui nous aide beaucoup en gardant des fichiers organisés de manière très propre et facile à maintenir.
Obtention de Stow
Vos référentiels de distribution sont très susceptibles de contenir stow , par exemple dans Fedora, tout ce que vous avez à faire pour l'installer est:
# dnf install stowou sur Ubuntu/Debian, vous pouvez installer Stow en exécutant:
# apt install stow
Dans certaines distributions, Stow n'est pas disponible dans des référentiels standard, mais il peut être facilement obtenu en ajoutant des sources de logiciels supplémentaires (par exemple EPEL dans le cas de Rhel et Centos7) ou, en dernier recours, en le compilant à partir de la source: il nécessite très peu de dépendances.
Compilation du rangement de la source
La dernière version STOW disponible est le 2.2.2 : Le tarball est disponible en téléchargement ici: https://ftp.gnu.org/gnu/stow/ .
Une fois que vous avez téléchargé les sources, vous devez extraire le tarball. Accédez au répertoire où vous avez téléchargé le package et exécutez simplement:
$ tar -xvpzf stow-2.2.2.tar.gzUne fois les sources extraites, naviguez dans le répertoire Stow-2.2.2 et pour compiler le programme simplement:
$ ./configuremake
Enfin, pour installer le package:
# make installPar défaut, le package sera installé dans le répertoire /usr/local/, mais nous pouvons modifier cela, en spécifiant le répertoire via l'option - préfixe du script de configuration , ou en ajoutant prefix="/ your/dir" lors de l'exécution de la commande faites installer .
À ce stade, si tout fonctionnait comme prévu, nous devons avoir stow installé sur notre système
Comment fonctionne Stow?
Le concept principal derrière Stow Il est très bien expliqué dans le manuel du programme:
The approach used by Stow is to install each package into its own tree,
then use symbolic links to make it appear as though the files are
installed in the common tree.
Pour mieux comprendre le fonctionnement du package, analysons ses concepts clés:
Le répertoire Stow
Le répertoire Stow est le répertoire racine qui contient tous les packages stow , chacun avec son propre sous-arbre privé. Le répertoire Stow typique est /usr/local/stow : à l'intérieur, chaque sous-répertoire représente un package
Paquets de rangement
Comme indiqué ci-dessus, le répertoire Stow contient des «packages», chacun dans son propre sous-répertoire séparé, généralement nommé d'après le programme lui-même. Un package n'est rien d'autre qu'une liste de fichiers et répertoires liés à un logiciel spécifique, géré en tant qu'entité.
Le répertoire cible Stow
Le répertoire cible Stow est un concept très simple à expliquer. Il s'agit du répertoire dans lequel les fichiers de package doivent sembler être installés. Par défaut, le répertoire cible Stow est considéré comme celui au-dessus du répertoire dans lequel Stow est invoqué. Ce comportement peut être facilement modifié en utilisant l'option -t (abréviation pour –target), ce qui nous permet de spécifier un autre répertoire.
Un exemple pratique
Je crois qu'un exemple bien fait vaut 1000 mots, alors montrons comment fonctionne Stow. Supposons que nous voulons compiler et installer libx264 . Clone le référentiel Git contenant ses sources:
$ git clone git://git.videolan.org/x264.gitQuelques secondes après l'exécution de la commande, le répertoire «x264» sera créé et il contiendra les sources, prêtes à être compilées. Nous naviguons maintenant à l'intérieur et exécutons le script Configurer , spécifiant le répertoire/usr/local/stow/libx264 en tant que - préfixe :
$ cd x264 && ./configure --prefix=/usr/local/stow/libx264Ensuite, nous construisons le programme et l'installons:
$ makemake install
Le répertoire x264 aurait dû être créé à l'intérieur du répertoire Stow: il contient toutes les choses qui auraient été normalement installées dans le système directement. Maintenant, tout ce que nous avons à faire, c'est d'invoquer Stow. Nous devons exécuter la commande soit à l'intérieur du répertoire Stow, en utilisant l'option -d pour spécifier manuellement le chemin d'accès au répertoire Stow (par défaut est le répertoire actuel), ou en spécifiant la cible avec -t comme dit précédemment. Nous devons également fournir le nom du package à ranger comme argument. Dans ce cas, nous exécutons le programme à partir du répertoire Stow, donc tout ce que nous devons taper est:
# stow libx264Tous les fichiers et répertoires contenus dans le package LIBX264 ont maintenant été symbolisés dans le répertoire parent (/ usr/local) de celui à partir de laquelle Stow a été invoqué, de sorte que, par exemple, des binaires libx264 contenus dans /usr/Local/stow/x264/bin sont maintenant systématiques dans /usr/local/bin , les fichiers contenus dans /usr/local/stow/x264/etc sont Maintenant symbolique dans /usr/local/etc et ainsi de suite. De cette façon, il apparaîtra au système que les fichiers ont été installés normalement, et nous pouvons facilement garder une trace de chaque programme que nous compilons et installons. Pour revenir à l'action, nous utilisons simplement l'option -d :
# stow -d libx264C'est fait! Les Symlinks n'existent plus: nous «désinstallissons» un package de Stow, gardant notre système dans un état propre et cohérent. À ce stade, il devrait être clair pourquoi Stow il est également utilisé pour gérer les fichiers à points. Une pratique courante consiste à avoir tous les fichiers de configuration spécifiques à l'utilisateur dans un référentiel GIT, à les gérer facilement et à les faire disponibles partout, puis à utiliser Stow pour les placer le cas échéant, dans le répertoire de l'utilisateur .
Stow vous empêchera également de remplacer les fichiers par erreur: il refusera de créer des liens symboliques si le fichier de destination existe déjà et ne pointe pas vers un package dans le répertoire Stow. Cette situation est appelée conflit dans la terminologie de Stow.
C'est ça! Pour une liste complète des options, veuillez consulter la page manuelle Stow et n'oubliez pas de nous dire vos opinions à ce sujet dans les commentaires.