Enlaces simbólicos dinámicos

10

He creado mi aplicación para diferentes arquitecturas y me gustaría crear un "enlace simbólico dinámico" que me lleve a la versión correcta basada en una variable.

Si la máquina en la que estoy conectado actualmente es x86, entonces el enlace simbólico debería llevarme a esa compilación.

Un ejemplo burlado de lo que quiero hacer:

$ 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

es posible?

Sé que puedo usar cd $(uname -i), pero quiero algo más simple.

dogbane
fuente
¿Conoces OpenAFS? Porque usa @sys exactamente de esa manera, incluso usando '@sys'. Si es así, ¿estás buscando una alternativa a OpenAFS?
jsbillings
@jsbilling Me gustaría saber si esto es posible en un sistema de archivos estándar, sin AFS. Solía ​​trabajar en AFS hace mucho tiempo y podía hacer esto, por eso pregunté.
dogbane
Me imaginé tanto. No conozco ningún otro sistema de archivos que tenga enlaces simbólicos 'mágicos' que no sean la configuración vfs.generic.magiclinks de NetBSD. ( daemon-systems.org/man/symlink.7.html )
jsbillings
Existen tales entornos para, por ejemplo, Ruby y Perl, de modo que puede elegir qué versión usar cuando esté probando cosas. Puede encontrar inspiración en rvm.io/rubies .
Jenny D

Respuestas:

2

Los enlaces simbólicos son estáticos: el sistema de archivos simplemente almacena una cadena y los accesos al enlace simbólico se redirigen al archivo cuyo nombre (relativo a la ubicación del enlace simbólico) es esa cadena.

Sería simple escribir un sistema de archivos FUSE que exponga dichos enlaces simbólicos dinámicos, pero no conozco uno existente.

Gilles 'SO- deja de ser malvado'
fuente
2

Supongo que esto es binarios, por lo que lo haría con un evaluador variable PATH que el enlace simbólico.

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

Si está utilizando una herramienta como cfengine o puppet. Se puede crear un enlace simbólico al directorio apropiado en función de la arquitectura del sistema.

BillThor
fuente
1

Si solo desea escribir una sintaxis más simple que:

cd $(uname -i)

Podrías ponerlo en una variable como:

 s=`uname -i` 

en su secuencia de comandos de inicio de sesión, para que pueda hacer

 cd $s

Cuando quieres cd

bdk
fuente
0

el enlace simbólico es esencialmente un archivo con un indicador especial que contiene alguna ruta, y esta ruta se interpreta como está, por lo que no puede hacer que un enlace simbólico apunte a otras ubicaciones de esa manera. Pero aún puede escribir un script que ejecute una compilación adecuada.

gelraen
fuente