Utiliser des liens symboliques et git pour gérer les versions de build

En général, je suis le stream de travail suivant lorsque je tmux un programme ( emacs , tmux , etc.)

 /home/opt/[name of the program]/builds/[version]/ bin lib share 

Par exemple pour un programme comme tmux j'ai ce qui suit:

 /my_local_opt/tmux/builds/1.7.-227/ bin lib share 

Je crée ensuite des liens sym dans /home/bin/ pointant vers les builds spécifiques que j'ai, et je n'ai jamais besoin de toucher ma variable PATH , puisque je le corrige pour inclure /home/bin .

Par exemple, pour l'exemple ci-dessus, je voudrais

  • Créez un lien sym: from: /home/bin/tmux à: /my_local_opt/tmux/builds/1.7.-227/bin/tmux
  • Avoir PATH inclure seulement /home/bin

Cependant, je ne suis pas sûr de pouvoir suivre une approche similaire pour les MANPATH man ( MANPATH ) et lib ( LD_LIBRARY_PATH ).

  1. Par exemple, après avoir construit tmux je remarque qu'il crée:

    .. /share/man/man1/tmux.1

    J'ai donc essayé de créer un lien symbolique vers ce file à partir d'un endroit comme /home/share , puis de réparer MANPATH pour inclure ce path. Mais quand j'ai tapé l' man tmux cela ne fonctionnait pas (il disait " No manual entry for tmux "). Pourquoi?

  2. Et pour la lib ? Je pensais que je pourrais peut-être fixer LD_LIBRARY_PATH à un directory spécifique pour chaque programme, puis utiliser des liens sym pour contrôler quelle version est incluse. Serait-ce une bonne idée?

Plus généralement, est-ce une bonne idée de gérer des versions dans un système utilisant des liens sym? À la longue, j'espère pouvoir laisser les liens sym dans un référentiel git pour garder la trace de plusieurs configurations.

Au cas où cela serait utile, je n'ai pas de privilèges d'administrateur sur la machine où je construis un logiciel, j'espère donc pouvoir l'utiliser facilement pour organiser et gérer mes builds (sans avoir à modifier constamment mes variables d'environnement)

Votre objective est très similaire au système Gentoo Prefix ; il ne garde cependant pas les applications construites séparément, ni stocke les liens symboliques dans Git.

Cependant, cela LD_LIBRARY_PATH besoins en LD_LIBRARY_PATH et en bibliothèques (avec la mise en garde que LD_LIBRARY_PATH doit être définie, ou si les binarys et les configurations ont un path spécifique codé en dur).

Séparément, le model git-of-symlinks en lui-même est similaire dans le concept au model OverlayFS / AUFS, avec plus de mix & match en place.