Динамические Симлинки


10

Я создал свое приложение для разных архитектур и хотел бы создать «динамическую символическую ссылку», которая приведет меня к правильной версии на основе переменной.

Если машина, на которой я в данный момент вошел, - это x86, то символическая ссылка должна привести меня к этой сборке.

Издевались пример того , что я хочу сделать:

$ 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

Это возможно?

Я знаю, что могу использовать cd $(uname -i), но хочу что-то попроще.


Вы знакомы с OpenAFS? Потому что он использует @sys точно таким же образом, даже используя @sys. Если да, то вы ищете альтернативу OpenAFS?
Jsbillings

@jsbilling Я хотел бы знать, возможно ли это на стандартной файловой системе без AFS. Раньше я работал над AFS и мог это сделать, поэтому я и спросил.
Dogbane

Я понял, как много. Я не знаю ни одной другой файловой системы, которая имела бы «магические» символические ссылки, кроме настройки vfs.generic.magiclinks в NetBSD. ( daemon-systems.org/man/symlink.7.html )
jsbillings

Существуют такие среды, например, Ruby и Perl, что вы можете выбрать, какую версию использовать при тестировании. Вы можете найти вдохновение на rvm.io/rubies .
Дженни Д

Ответы:



2

Символические ссылки являются статическими: файловая система просто хранит строку, и доступ к символической ссылке перенаправляется в файл, имя которого (относительно расположения символической ссылки) является этой строкой.

Было бы просто написать файловую систему FUSE, показывающую такие динамические символические ссылки, но я не знаю существующей.


2

Я предполагаю, что это двоичные файлы, поэтому я сделал бы это с переменной rater переменной PATH, а не с символической ссылкой.

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

Если вы используете такой инструмент, как cfengine или puppet. Символическая ссылка на соответствующий каталог может быть создана на основе архитектуры системы.


1

Если вы просто хотите набрать более простой синтаксис, чем:

cd $(uname -i)

Вы можете поместить его в переменную, например:

 s=`uname -i` 

в вашем скрипте входа, так что вы можете просто сделать

 cd $s

Когда вы хотите, чтобы CD


0

Символическая ссылка - это, по сути, файл со специальным флагом, который содержит некоторый путь, и этот путь интерпретируется как есть, поэтому вы не можете сделать одну символическую ссылку, чтобы указывать на другие местоположения таким образом. Но вы все равно можете написать скрипт, который будет запускать соответствующую сборку.

Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.