IT

Vagrant의 신용 링크 및 동기화 된 폴더

lottoking 2020. 9. 1. 07:41
반응형

Vagrant의 신용 링크 및 동기화 된 폴더


Vagrant를 사용하여 팀에 공통 개발 환경을 제공하고 싶습니다. 호스트는 많은 것입니다.

  • 일부는 OS X, 일부 Linux 및 일부 Windows를 사용합니다.
  • 일부는 VMware를 사용하고 일부는 VirtualBox를 사용합니다.

VM 내부에서 Linux를 실행합니다.

지금 모든 것이 좋습니다.

이제 우리의 아이디어는 각 개발자가 자신이 선택한 IDE를 사용할 수있는 것이 었습니다. 따라서 호스트와 VM간에 소스 코드를 공유하는 동기화 된 폴더를 도입했습니다. 이것은 기본적으로 잘 작동합니다 ...

소스 코드 내부에는 실제로 몇 개의 존재하는 릭 링크가 있는데, 이는 VM 내부의 Linux에서는 문제가 없지만 호스트로서 Windows에서는 문제가 발생합니다. 가 할 수 우리 없는 유일한 [해석] 심볼릭-link를 제거하는 것이므로이를 처리 할 다른 방법이 필요합니다.

지금까지 여러 가지 옵션을 시도했습니다.

  • Vagrant 문제관한 해결 방법이 있습니다 . 안타깝게도 이것은 VirtualBox 전용이며 VMware를 실행하는 사용자에게 도움이되지 않습니다. 지금까지 사용 된 공급자에 따라 Vagrantfile 에서 코드를 실행하는 방법을 찾을 수 있습니다 .
  • 표준 공유 폴더를 사용하는 대신 rsync 유형을 보았습니다 . 이것은 Windows에서 작동하지만 OS X에서 충돌하며 symlink has no referent(심볼릭 링크 당 하나 의 오류)를 알려주는 여러 오류가 발생합니다.
  • NFS대해 생각 했지만 윈도우를 호스트로 사용하지 않는 경우에만 작동합니다 .
  • 우리는 또한 SMB대해서도 알고 있지만 이것은 윈도우에서만 호스트로 작동합니다.

공유 폴더 내에서 다중 플랫폼 호스트 및 공유 및 수릭 링크에 문제가있는 지구상에서 우리가 유일하게 또는 처음이라고 생각할 수 없습니다.

어디에서나 유지하면서 다른 호스트 운영 체제를 계속 사용할 수 있습니까?


Virtualbox는 보안상의 콘텐츠 공유 폴더에서 문구 링크를 허용하지 않습니다. 등록 릭 링크를 활성화하려는 Vagrantfile의 vm provider config 블록에 다음 줄을 추가해야합니다.

config.vm.provider "virtualbox" do |v|
    v.customize ["setextradata", :id, "VBoxInternal2/SharedFoldersEnableSymlinksCreate/v-root", "1"]
end

또한 Windows에서 vagrant up은 관리자 권한이있는 셸에서 실행되어야합니다. 필요한 해결 방법이 없습니다.


받아 들여진 대답은 좋지 않습니다. 은 질문 공유 폴더가 아니라 동기화 된 폴더 의 문제를 설명합니다 . 제안 된 솔루션은 rsynced ( 공유되지 않음 ) 폴더 에 영향을 미치지 않습니다 . 그리고 OP가 공유 폴더를 사용하고 있더라도 이미 수락 된 답변의 제안은 OP가 질문을 게시하기 15 개월 전에 공개 된 1.1 vagrant에 통합 된 것입니다 ( VirtualBox의 공유 폴더가 너무 느립니다 ).


이 같은 문제가 발생했습니다. OS X에서 symlink has no referentrsync 오류가 발생했습니다. 나는 개인적으로 특정 특정 rsync를 복제하여 인수 인수 vagrantfile.

config.vm.synced_folder ".", "/var/www", type: "rsync", rsync__args: ["--verbose", "--archive", "--delete", "-z"]

나는 또한 방랑의 GitHub의 에서이 문제열어서 기본값에 잘못된 것으로 보이는 것을 지적했습니다 rsync__args(기본 인수 중 특히 하나가 --copy-links다른 인수 를 깨는을 구석으로 같습니다 --archive. 적어도 끊어진 심볼릭 링크 복사에 관한 한)).


실행중인 오류를 해결하기 위해이 모든 옵션을 시도했습니다 npm install.

관리자 프롬프트에서 vagrant를 실행하고 vm ( vagrant reload)을 로드하기 만하면 문제가 해결되었습니다.

돌아가서 SharedFoldersEnableSymlinksCreateVagrantfile 에서 구성을 제거했지만 여전히 정상이었습니다.


기본 동기화 폴더 유형입니다 vboxsf파일 / 디렉토리의 많은 수의 성능 문제를 알고, 그리고 신용 링크와 하드 링크 (표 참조에 대한 지원이 부족했다 (818) -7+ 세 버그). 그것을 사용하지 않습니다.

rsync 유형 동기화 폴더가 최선의 선택 일 수 있습니다.

충돌에서 언급 된 어떤 버전의 rsync를 실행 중입니까? brew를 통해 3.1.0으로 업데이트 할 수 있습니다. OOTB가 너무 오래되어 (2.x) 문제가 모든 것이 알고 있습니다.


한 시간 동안 소란을 피우고 몇 가지 다른 솔루션 ( vagrant-vbguest, Marvin이 제안한 수정 사항)을 시도한 후 VirtualBox 4.8.10, Vagrant 1.5.1에서 작동하도록 공유 폴더에 링크를 사용할 수 없습니다.

더 간단한 구성은 별도의 공유 폴더를 사용 File.readlink하여 기본 경로를 읽는 것입니다.

config.vm.synced_folder File.readlink('SYMLINK'), "/mount/path"

Vagrantfile에 다음 행을 추가하십시오.

config.vm.provider "virtualbox" do |v|
    v.customize ["setextradata", :id, "VBoxInternal2/SharedFoldersEnableSymlinksCreate/v-root", "1"]
end

virtualbox 6.0.8을 6.0.4로, vagrant 2.2.4를 2.2.1로 다운 그레이드 한 후에 저에게 딱 맞습니다.

"관리자 권한으로 실행"으로 터미널을 열 때 (Windows 10 git bash 사용).

또한 git bash 변경 : 프로젝트 파일에서 : $ vim .git / config change to symlinks = true

[core]
        repositoryformatversion = 0
        filemode = false
        bare = false
        logallrefupdates = true
        symlinks = true
        ignorecase = true
[remote "origin"]
        fetch = +refs/heads/*:refs/remotes/origin/*
[branch "master"]
        remote = origin
        merge = refs/heads/master

참고 URL : https://stackoverflow.com/questions/24200333/symbolic-links-and-synced-folders-in-vagrant

반응형