web-dev-qa-db-ja.com

Vagrant同期フォルダーは大文字と小文字を区別しません

Webスタックについては、WindowsサーバーからCentOSに移行しています。開発を容易にするために、Vagrantを使用してCentOS VMをローカルで実行しています。 Vagrantの Synced Folders 機能を使用して、開発者がホストマシンでお気に入りのIDEを使用できるようにしていますが、このセットアップにはファイルシステムの大文字と小文字の区別という重要な機能がありません。

VM内の同期フォルダーは明らかにホストのファイルシステムのプロパティを取得するため、WindowsマシンまたはOSXから開発している場合でも、ファイルシステムでは大文字と小文字が区別されません。本番サーバーは純粋なCentOSであり、そのファイルシステムwillは大文字と小文字を区別するため、これは大きな問題です。

大文字と小文字の区別は、ローカルVMが必要な主な理由の1つです。 「私のマシンで動作します!」

検討または試したいくつかの回避策:

  • lsyncd を使用して、vagrant共有からVM大文字と小文字を区別します内の場所に同期します。
    • ホスト上のファイルを更新すると、lsyncがリッスンするVMにイベントが生成されないようです
  • ホストで大文字と小文字を区別するパーティションを作成します
    • (Windowsでは機能しません)
  • Sambaを使用する
    • これはオプションかもしれませんが、まだ検証していません。

もっと良い方法はありますか? Windows、OS X、Ubuntuを使用する開発者がいるため、ソリューションはどこでも機能する必要があります。

10
Scott Coldwell

私はプロジェクトフォルダーにスパースディスクイメージを作成し、大文字と小文字を区別するようにフォーマットすることで、OS Xの問題を回避しました。

スパースイメージをマウントした後、コードをそのイメージに移動しました。次に、元の「src」フォルダをマウントされたイメージへのsymlink/aliasに置き換えました。これにより、ゲストOS内で共有フォルダーの大文字と小文字が区別されます。

間違いなく最もエレガントなソリューションではありませんが、展開と開発環境の間のギャップを埋めるので、そもそもVagrantを使い始めました。

おそらく、UbuntuとWindowsでも同様の回避策が機能しますか?

6
Jason Suave

私は同じ問題に遭遇し、私がそれに取り組んだ方法は、gitクローンを介してVMの作業ディレクトリを取得し、それを指すSamba共有を追加して、WindowsまたはMacの両方でアクセスできるようにすることです。

0
Thazar