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 referent
rsync 오류가 발생했습니다. 나는 개인적으로 특정 특정 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
)을 로드하기 만하면 문제가 해결되었습니다.
돌아가서 SharedFoldersEnableSymlinksCreate
Vagrantfile 에서 구성을 제거했지만 여전히 정상이었습니다.
기본 동기화 폴더 유형입니다 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
'IT' 카테고리의 다른 글
Bitbucket Git 저장소에 최신 파일 연결 (0) | 2020.09.01 |
---|---|
Contains (string) 대신 LINQ Contains (string [])를 사용하는 방법 (0) | 2020.09.01 |
.net 4.5에서 HttpClient를 사용하여 쿠키를 응답에서 벗어나려는 시도 (0) | 2020.09.01 |
Collections.emptyList ()와 Collections.EMPTY_LIST의 차이점은 무엇입니까? (0) | 2020.09.01 |
((a + (b & 255)) & 255)는 ((a + b) & 255)와 같은가요? (0) | 2020.09.01 |