Symlink dinamici


10

Ho creato la mia app per diverse architetture e vorrei creare un "collegamento dinamico" che mi porta alla versione corretta in base a una variabile.

Se la macchina a cui sono attualmente connesso è x86, il link simbolico dovrebbe portarmi a quella build.

Un esempio beffardo di quello che voglio fare:

$ 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

È possibile?

So che posso usare cd $(uname -i), ma voglio qualcosa di più semplice.


Conoscete OpenAFS? Perché usa @sys esattamente in quel modo, anche usando '@sys'. Se è così, stai cercando un'alternativa a OpenAFS?
jsbillings,

@jsbilling Vorrei sapere se questo è possibile su un filesystem standard, senza AFS. Lavoravo su AFS molto tempo fa e potevo farlo, quindi perché l'ho chiesto.
dogbane,

C'ero arrivato pure io. Non conosco nessun altro filesystem che abbia link "magici" diversi dall'impostazione vfs.generic.magiclinks di NetBSD. ( daemon-systems.org/man/symlink.7.html )
jsbillings

Esistono tali ambienti, ad esempio Ruby e Perl, in modo da poter scegliere quale versione utilizzare quando si verificano le cose. Potresti trovare ispirazione su rvm.io/rubies .
Jenny D,

Risposte:



2

I collegamenti simbolici sono statici: il filesystem memorizza solo una stringa e gli accessi al collegamento simbolico vengono reindirizzati al file il cui nome (relativo alla posizione del collegamento simbolico) è quella stringa.

Sarebbe semplice scrivere un filesystem FUSE che esponga tali symlink dinamici, ma non ne conosco uno esistente.


2

Presumo che si tratti di file binari, quindi lo farei con un rater variabile PATH rispetto a symlink.

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

Se stai usando uno strumento come cfengine o burattino. È possibile creare un collegamento simbolico alla directory appropriata in base all'architettura di sistema.


1

Se vuoi semplicemente digitare una sintassi più semplice di:

cd $(uname -i)

Potresti metterlo in una variabile come:

 s=`uname -i` 

nello script di accesso, quindi puoi semplicemente farlo

 cd $s

Quando vuoi cd


0

symlink è essenzialmente un file con flag speciale che contiene un percorso, e questo percorso è interpretato così com'è, quindi non è possibile creare un collegamento simbolico per puntare ad altre posizioni in quel modo. Ma puoi ancora scrivere script che eseguiranno build appropriate.

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.