Dynamisk symbolsk link
Er der nogen måde at lave et symbolsk link dynamisk afhængig af en environmentvariabel?
Jeg har flere arbejdsstationder, der mounter den samme netværkspartion med data. Men de mounter den ikke til samme mountpoint. Nogle filer på netværkspartionen er symbolske links til selvsamme partiion.
Dvs. hvis maskine A bruger mountpunktet /data og maskine B bruger punktet /mnt/data, så skal det symbolske link pege på /data/sti/til/fil på A, og til /mnt/data/sti/til/fil på B. Jeg ved godt at man kan linke relativt, men det er ikke en optimal løsning idet bibliokerne skal kunne flyttes rundt i strukturen uden at linket lige pludselig ikke peger på noget.
Jeg mangler noget a'la:
ln -s ${DATAMOUNT}/sti/til/fil linknavn.conf , hvor environment-variablen først fortolkes "runtime".
Kan man den slags?
Jeg har flere arbejdsstationder, der mounter den samme netværkspartion med data. Men de mounter den ikke til samme mountpoint. Nogle filer på netværkspartionen er symbolske links til selvsamme partiion.
Dvs. hvis maskine A bruger mountpunktet /data og maskine B bruger punktet /mnt/data, så skal det symbolske link pege på /data/sti/til/fil på A, og til /mnt/data/sti/til/fil på B. Jeg ved godt at man kan linke relativt, men det er ikke en optimal løsning idet bibliokerne skal kunne flyttes rundt i strukturen uden at linket lige pludselig ikke peger på noget.
Jeg mangler noget a'la:
ln -s ${DATAMOUNT}/sti/til/fil linknavn.conf , hvor environment-variablen først fortolkes "runtime".
Kan man den slags?
Kommentarer7
Re: Dynamisk symbolsk link
export DATAMOUNT=/mnt/data
ln -s $DATAMOUNT/sti/til/fil linknavn.conf
Jeg kan i øvrigt godt lide at "echo" når jeg eksperimenterer, så laver man ingen ulykker:
echo ln -s $DATAMOUNT/sti/til/fil linknavn.conf
Tror du stort set selv har
export DATAMOUNT=/mnt/data
ln -s $DATAMOUNT/sti/til/fil linknavn.conf
Så har du enten misforstået mig eller også er dit system anderledes end mit.
Hvis jeg benytter ovenstående så kommer linket til at pege på hvad end DATAMOUNT er i det øjeblik linket laves - og IKKE, som hensigten var, det som DATAMOUNT er, i det øjeblik linket kaldes.
Problemet er at hvis jeg afvikler
ln -s $DATAMOUNT/sti/til/fil linknavn.conf på maskine A, så bliver linket rettet mod /data/sti/til/fil. Og den sti er ikke-eksisterende på maskine B (hvor den retteligt hedder /mnt/data/sti/til/fil
Giver det mening?
Re: Dynamisk symbolsk link
Men ændrer monteringspunktet sig efter linket er dannet? I dit eksempel har du jo to forskellige maskiner som godt nok peger forskellige steder her, men vel ikke efter linket er oprettet???
Eller også misforstår jeg dig stadig!
Re: Re: Dynamisk symbolsk link
Hvis jeg kunne lave linket med en miljøvariabel, som først evalueres når linket kaldes, så kunne jeg fikse det på den måde - og det er det jeg efterspørger. Hvis man bruger ln -s ${DATAMOUNT]/sti/til/fil, så afhænger det af hvad DATAMOUNT er på den maskine, som kommandoen eksekveres fra i eksekveringstidspunktet. Hvis dette ikke er identisk med DATAMOUNT på de andre maskiner går det galt.
Jeg kan altså ikke forklare det bedre...
Re: Dynamisk symbolsk link
Min eneste idé er så at lade linket pege på et andet symbolsk link der ligger samme sted på alle maskine, fx /mnt/mainlink
Dette link kan så pege forskellige steder hen på hver maskine. Selvfølgelig går det i teorien ud over performance, men jeg tror ikke man kan mærke det overhovedet i praksis.
Re: Re: Dynamisk symbolsk link
Det med miljøvariabel ville være optimalt, idet den i forvejen er en del af opsætningen. Hvis man ikke kan få det til at virke, så vælger jeg nok at lave linksene relative og så leve med at man skal bruge indersiden af hovedet inden man flytter rundt på bibliotekerne.
Performance er ligegyldig. Det er bare nogle initialiseringsfiler.
Re: Dynamisk symbolsk link