チームに共通の開発環境を提供するためにVagrantを使いたいと思っています。ホストは全く違います:
VMの中でLinuxを走らせたい。
今のところ、すべて順調だ。
さて、我々のアイデアは、各開発者が自分の好きなIDEを使えるようにすることだ。そのため、ホストとVMの間でソースコードを共有する同期フォルダを導入した。これは基本的にうまくいく......シンボリックリンクを除いては。
VM内のLinuxでは問題ないが、ホストであるWindowsでは問題が発生する。唯一できないことは、シンボリック・リンクを取り除くことなので、これに対処する別の方法が必要だ。
これまでのところ、いくつかのオプションを試してみた:
symlink has no referent
(シンボリックリンク1つにつき1つのエラー) というエラーが出てクラッシュします。マルチプラットフォームホストと共有フォルダ内のシンボリックリンクの問題を経験したのは、この地球上で私たちだけ、あるいは私たちが初めてだとは思えません。
シンボリックリンクを維持しつつ、異なるホストOSを使用できるようにするには、この問題をどのように解決すればよいでしょうか?
受け入れられた答えは良くありません。 質問は、 synced フォルダーの問題を説明しています。 not ** shared *フォルダーです。 提案されたソリューションは、rsynced(共有されていない)フォルダーには影響しません。 また、OPが共有**フォルダを使用していたとしても、受け入れられた回答の提案は、OPが質問を投稿する15か月前にリリースされた1.1の時点ですでに浮浪者に統合されている( VirtualBoxの共有フォルダーは非常に遅いは言うまでもありません。
---。 私はこれと同じ問題に遭遇しました:OS Xで、「symlinkには参照対象がありません」rsyncエラーが発生しました。 私は個人的に、特定のrsync argsを「vagrantfile」に追加することで解決できました。
config.vm.synced_folder ".", "/var/www", type: "rsync", rsync__args: ["--verbose", "--archive", "--delete", "-z"]
---。 私はまた、vagrantのgithubでこの問題を開き、「rsync__args」のデフォルト値に問題があると思われるものを指摘しました(具体的には、デフォルトのargsの1つである「--copy-links」)。少なくとも壊れたシンリンクのコピーに関する限り、別の「-アーカイブ」を壊しているようです)。
Virtualbox はセキュリティ上の理由から共有フォルダへのシンボリックリンクを許可していません。シンボリックリンクを有効にするには、Vagrantfile の vm プロバイダ設定ブロックに以下の行を追加する必要があります:
config.vm.provider "virtualbox" do |v|
v.customize ["setextradata", :id, "VBoxInternal2/SharedFoldersEnableSymlinksCreate/v-root", "1"]
end
さらに、Windows の vagrant up は管理者権限のあるシェルで実行する必要があります。 回避策は必要ありません。
デフォルトの同期フォルダタイプである vboxsf
は、大量のファイル / ディレクトリに対するパフォーマンス上の問題があることが知られており、シンボリックリンクとハードリンクをサポートしていません(チケット 818 - 7 年以上前のバグを参照)。使用を避けてください。
rsync タイプの同期フォルダが最良の選択かもしれません。
クラッシュしたとのことですが、お使いのrsyncのバージョンは?brew経由で3.1.0にアップデートしてみてください。OOTBのものは古すぎる(2.x)ので、それが問題を引き起こしている可能性があります。
Vagrantfileに次の行を追加します。
config.vm.provider "virtualbox" do |v|
v.customize ["setextradata", :id, "VBoxInternal2/SharedFoldersEnableSymlinksCreate/v-root", "1"]
end
これは、仮想ボックス6.0.8を6.0.4にダウングレードした後、 ONLY で機能しました。 浮浪者2.2.4から2.2.1。
ターミナルを開いたとき(私はウィンドウ10でgit bashを使用します)。 「管理者として実行」を使用します。
また、git bashの変更も試してください。 プロジェクトファイル: $ vim .git / config。 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