Liens symboliques dynamiques


10

J'ai construit mon application pour différentes architectures et je voudrais créer un "lien symbolique dynamique" qui m'amène à la bonne version basée sur une variable.

Si la machine à laquelle je suis actuellement connecté est x86, le lien symbolique devrait m'amener à cette version.

Un exemple moqué de ce que je veux faire:

$ uname -i
x86_64

$ ls -ltr 
lrwxr-xr-x  1 dogbane gg     4 Feb 16 15:40 mylink -> @sys/
drwxrwxr-x  2 dogbane gg  2048 Feb 16 15:40 x86_64/
drwxrwxr-x  2 dogbane gg  2048 Feb 16 15:40 i386/

$ cd mylink

$ pwd -P
~/x86_64

Est-ce possible?

Je sais que je peux utiliser cd $(uname -i), mais je veux quelque chose de plus simple.


Connaissez-vous OpenAFS? Parce qu'il utilise @sys exactement de cette façon, même en utilisant '@sys'. Si oui, cherchez-vous une alternative à OpenAFS?
jsbillings

@jsbilling Je voudrais savoir si cela est possible sur un système de fichiers standard, sans AFS. J'ai travaillé sur AFS il y a longtemps et je pouvais le faire, c'est pourquoi j'ai demandé.
dogbane

Je ai pensé autant. Je ne connais aucun autre système de fichiers qui a des liens symboliques «magiques» autres que le paramètre vfs.generic.magiclinks de NetBSD. ( daemon-systems.org/man/symlink.7.html )
jsbillings

Il existe de tels environnements pour par exemple Ruby et Perl, de sorte que vous pouvez choisir la version à utiliser lorsque vous testez des choses. Vous pourriez trouver de l'inspiration sur rvm.io/rubies .
Jenny D

Réponses:



2

Les liens symboliques sont statiques: le système de fichiers stocke simplement une chaîne et les accès au lien symbolique sont redirigés vers le fichier dont le nom (par rapport à l'emplacement du lien symbolique) est cette chaîne.

Il serait simple d'écrire un système de fichiers FUSE exposant de tels liens dynamiques, mais je n'en connais pas de existant.


2

Je suppose que ce sont des binaires, donc je le ferais avec un évaluateur de variable PATH que symlink.

PATH=$PATH:/base/$ARCH/bin.

Si vous utilisez un outil comme cfengine ou marionnette. Un lien symbolique vers le répertoire approprié peut être créé en fonction de l'architecture du système.


1

Si vous souhaitez simplement saisir une syntaxe plus simple que:

cd $(uname -i)

Vous pouvez le mettre dans une variable comme:

 s=`uname -i` 

dans votre script de connexion, vous pouvez donc simplement faire

 cd $s

Quand tu veux cd


0

le lien symbolique est essentiellement un fichier avec un drapeau spécial qui contient un chemin, et ce chemin est interprété tel quel, vous ne pouvez donc pas créer un lien symbolique pour pointer vers d'autres emplacements de cette manière. Mais vous pouvez toujours écrire un script qui exécutera une construction appropriée.

En utilisant notre site, vous reconnaissez avoir lu et compris notre politique liée aux cookies et notre politique de confidentialité.
Licensed under cc by-sa 3.0 with attribution required.