Я хочу использовать Vagrant, чтобы предоставить моей команде общую среду разработки. Хозяева совершенно разные:
- Некоторые используют OS X, некоторые Linux и некоторые Windows.
- Некоторые используют VMware, некоторые - VirtualBox.
Внутри виртуальной машины мы хотим запустить Linux.
Пока все нормально.
Теперь наша идея заключалась в том, что каждый разработчик должен иметь возможность использовать IDE по своему выбору, и поэтому мы ввели синхронизированную папку, которая разделяет исходный код между хостом и виртуальной машиной. По сути, это тоже работает… за исключением символических ссылок.
Внутри нашего исходного кода у нас действительно есть несколько символических ссылок, что не является проблемой для Linux внутри виртуальной машины, но для Windows как хоста это вызывает проблемы. Единственное, что мы не можем сделать, это избавиться от символических ссылок, поэтому нам нужен другой способ справиться с этим.
Пока что мы испробовали несколько вариантов:
- В выпуске Vagrant упоминается обходной путь , к сожалению, он предназначен только для VirtualBox и не помогает тем, кто использует VMware. До сих пор мы не нашли способ запуска кода в Vagrantfile в зависимости от используемого провайдера.
- Вместо использования стандартной общей папки мы попробовали использовать тип rsync . Это работает в Windows, но вылетает в OS X с рядом ошибок, сообщающих нам, что
symlink has no referent
(одна ошибка на символическую ссылку). - Мы думали о NFS , но это работает, только если вы не используете Windows в качестве хоста.
- Мы также думаем о SMB , но это снова работает только в Windows в качестве хоста.
Я не могу представить, чтобы мы были единственными или первыми людьми на этой планете, у которых возникли проблемы с мультиплатформенными хостами и символическими ссылками в общей папке.
Как вы можете решить эту проблему, чтобы мы могли сохранить символические ссылки, но при этом использовать разные операционные системы хоста?