101

Vagrant を使用して、チームに共通の開発環境を提供したいと考えています。ホストは完全に異なります。

  • OS X を使用するもの、Linux を使用するもの、Windows を使用するものがあります。
  • VMware を使用するものもあれば、VirtualBox を使用するものもあります。

VM 内で Linux を実行します。

これまでのところ、すべて問題ありません。

ここで、各開発者が選択した IDE を使用できるようにするという考えに基づいて、ホストと VM の間でソース コードを共有する同期フォルダーを導入しました。これは基本的に同様に機能します...シンボリックリンクを除いて.

ソース コード内には実際にいくつかのシンボリック リンクがあります。これは VM 内の Linux 内では問題ではありませんが、ホストとしての Windows では問題が発生します。唯一できないことは、シンボリック リンクを取り除くことです。そのため、これに対処する別の方法が必要です。

これまで、いくつかのオプションを試してきました。

  • Vagrant の問題で言及されている回避策があります。残念ながら、これは VirtualBox のみであり、VMware を実行しているユーザーには役立ちません。これまでのところ、使用するプロバイダーに応じてVagrantfileでコードを実行する方法は見つかりませんでした。
  • 標準の共有フォルダーを使用する代わりに、rsyncタイプを使用してみました。これは Windows では機能しますが、OS X では多数のエラーsymlink has no referent(シンボリック リンクごとに 1 つのエラー) でクラッシュします。
  • NFSについて考えましたが、Windows をホストとして使用しない場合にのみ機能します。
  • SMBについても検討しましたが、これもホストとして Windows でのみ機能します。

マルチプラットフォームのホストと共有フォルダー内のシンボリック リンクで問題を経験したのは、この地球上で私たちだけであるとは思えません。

この問題をどのように解決すれば、シンボリック リンクを保持しながら、異なるホスト オペレーティング システムを使用できるようになりますか?

4

6 に答える 6

68

Virtualbox では、セキュリティ上の理由から、共有フォルダーへのシンボリック リンクを許可していません。シンボリック リンクを有効にするには、Vagrantfile の vm provider config ブロックに次の行を追加する必要があります。

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

さらに、Windows では、管理者権限を持つシェルで vagrant up を実行する必要があります。回避策は必要ありません。

于 2014-06-23T11:58:21.157 に答える
7

I tried all these options in order to resolve an error running npm install.

Simply running vagrant in an admin prompt and loading the vm (vagrant reload), resolved the issue.

I went back and removed the SharedFoldersEnableSymlinksCreate configuration from the Vagrantfile, and everything was still fine.

于 2017-01-09T00:15:53.267 に答える
2

デフォルトの同期フォルダー タイプにはvboxsf、多数のファイル/ディレクトリに関する既知のパフォーマンスの問題があり、シンボリック リンクとハード リンクのサポートが不足しています (チケット818 - 7 年以上前のバグを参照)。使用は避けてください。

rsync タイプの同期フォルダーが最良の選択かもしれません。

クラッシュしたとおっしゃいましたが、実行している rsync のバージョンは何ですか? brew で 3.1.0 に更新してみてください。OOTB は古すぎる (2.x) ため、問題が発生する可能性があります。

于 2014-06-17T06:26:42.577 に答える