동적 심볼릭 링크


10

다양한 아키텍처에 맞는 앱을 만들었으며 변수에 따라 올바른 버전으로 연결되는 "동적 심볼릭 링크"를 만들고 싶습니다.

현재 로그인 한 컴퓨터가 x86이면 symlink가 해당 빌드로 이동해야합니다.

내가하고 싶은 일에 대한 조롱의 예 :

$ 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

나는 많이 생각했다. NetBSD의 vfs.generic.magiclinks 설정 이외의 'magic'심볼릭 링크가있는 다른 파일 시스템은 없습니다. ( daemon-systems.org/man/symlink.7.html )
jsbillings

Ruby 및 Perl과 같은 환경이 있으므로 테스트 할 때 사용할 버전을 선택할 수 있습니다. rvm.io/rubies 에서 영감을 얻을 수 있습니다 .
Jenny D

답변:



2

심볼릭 링크는 정적입니다. 파일 시스템은 단지 문자열을 저장하고 심볼릭 링크에 대한 액세스는 이름이 심볼릭 링크의 위치와 관련이있는 파일로 리디렉션됩니다.

이러한 동적 심볼릭 링크를 노출시키는 FUSE 파일 시스템 을 작성하는 것은 간단 하지만 기존 파일 링크는 알 수 없습니다.


2

나는 이것이 바이너리라고 가정하므로 symlink보다 PATH 변수 평가자로 수행 할 것입니다.

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

cfengine 또는 꼭두각시와 같은 도구를 사용하는 경우 시스템 구조에 따라 적절한 디렉토리에 대한 심볼릭 링크를 만들 수 있습니다.


1

다음보다 간단한 구문을 입력하려면 다음을 수행하십시오.

cd $(uname -i)

다음과 같은 변수에 넣을 수 있습니다.

 s=`uname -i` 

로그인 스크립트에서

 cd $s

당신이 CD를 원할 때


0

symlink는 기본적으로 특정 경로가 포함 된 특수 플래그가있는 파일이며이 경로는있는 그대로 해석되므로 하나의 symlink를 다른 위치를 가리 키도록 만들 수 없습니다. 그러나 여전히 적절한 빌드를 실행할 스크립트를 작성할 수 있습니다.

당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.