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.


¿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.


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.


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


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.

Al usar nuestro sitio, usted reconoce que ha leído y comprende nuestra Política de Cookies y Política de Privacidad.
Licensed under cc by-sa 3.0 with attribution required.