Ich möchte Vagrant verwenden, um meinem Team eine gemeinsame Entwicklungsumgebung bereitzustellen. Die Gastgeber sind völlig anders:
- Einige verwenden OS X, einige Linux und einige Windows.
- Einige verwenden VMware, andere VirtualBox.
Innerhalb der VM möchten wir Linux ausführen.
Bisher ist alles in Ordnung.
Unsere Idee war nun, dass jeder Entwickler die IDE seiner Wahl verwenden kann. Daher haben wir einen synchronisierten Ordner eingeführt, der den Quellcode zwischen dem Host und der VM gemeinsam nutzt. Dies funktioniert im Grunde auch… mit Ausnahme von symbolischen Links.
In unserem Quellcode gibt es tatsächlich einige symbolische Links, was unter Linux in der VM kein Problem darstellt, aber unter Windows als Host verursacht dies Probleme. Das einzige, was wir nicht tun können, ist, die symbolischen Verknüpfungen loszuwerden. Wir brauchen also einen anderen Weg, um damit umzugehen.
Bisher haben wir eine Reihe von Optionen ausprobiert:
- In einer Ausgabe von Vagrant wird eine Problemumgehung erwähnt. Leider ist dies nur VirtualBox und hilft nicht denjenigen, die VMware ausführen. Bisher haben wir keine Möglichkeit gefunden, Code in der Vagrant-Datei auszuführen, je nach verwendetem Anbieter.
- Anstatt einen freigegebenen Standardordner zu verwenden, haben wir jetzt versucht, den Typ rsync zu verwenden. Dies funktioniert unter Windows, stürzt jedoch unter OS X mit einer Reihe von Fehlern ab, die uns mitteilen, dass
symlink has no referent
(ein Fehler pro symbolischem Link). - Wir haben über NFS nachgedacht , aber das funktioniert nur, wenn Sie Windows nicht als Host verwenden.
- Wir haben auch über SMB nachgedacht , aber dies funktioniert wieder nur unter Windows als Host.
Ich kann mir nicht vorstellen, dass wir die einzigen oder ersten Personen auf diesem Planeten sind, die Probleme mit Hosts mit mehreren Plattformen und symbolischen Links im freigegebenen Ordner haben.
Wie können Sie dieses Problem lösen, damit wir symbolische Links beibehalten und dennoch unterschiedliche Host-Betriebssysteme verwenden können?