Я хочу использовать Vagrant для создания общей среды разработки для своей команды. Хосты совершенно разные:
Внутри виртуальной машины мы хотим запустить Linux.
Пока все в порядке.
Теперь наша идея заключалась в том, чтобы каждый разработчик мог использовать IDE по своему усмотрению, и поэтому мы ввели синхронизированную папку, которая разделяет исходный код между хостом и ВМ. В принципе, это работает хорошо... за исключением символических ссылок.
Внутри нашего исходного кода действительно есть несколько символических ссылок, что не является проблемой в Linux внутри ВМ, но на Windows в качестве хоста это вызывает проблемы. Единственное, что мы не можем не сделать, это избавиться от символических ссылок, поэтому нам нужен другой способ решения этой проблемы.
До сих пор мы перепробовали несколько вариантов:
Я не могу представить, что мы единственные или первые на этой планете, кто испытывает проблемы с многоплатформенными хостами и символическими ссылками в общей папке.
Как вы можете решить эту проблему, чтобы мы могли сохранять символические ссылки, но при этом использовать разные операционные системы хостов?
Принято отвечать не хорошо. Вопрос, описывает проблему, с синхронизации папок, не общий папки. Предложенное решение будет иметь никакого эффекта на rsynced (не общая папка). И даже если операция с использованием общие папка, принято отвечать'ы предложение-это то, что уже интегрированы в бродягу состоянию на 1.1, выпущенный 15 месяцев до ОП запостил вопрос (не говоря уже о в VirtualBox'ы общие папки крайне медленно).
Я столкнулся с этой же проблемой: на OS X, я получил символическая ссылка имеет ошибку не референт
в rsync. Лично я был в состоянии решить это путем добавления определенного аргументы rsync для мой файл Vagrantfile`:
config.vm.synced_folder ".", "/var/www", type: "rsync", rsync__args: ["--verbose", "--archive", "--delete", "-z"]
Я тоже открыла этот вопрос](https://github.com/mitchellh/vagrant/issues/5471) на Vagrant'ы на GitHub, что представляется неверным с их значением по умолчанию для команды rsync__аргументы (в частности, что одним из умолчанию параметр args, --копировать ссылки
, кажется, ломая другое, --архив
, по крайней мере копировать символические ссылки обеспокоен).
Virtualbox не позволяет использовать симлинки в общих папках по соображениям безопасности. Чтобы включить симлинки, необходимо добавить следующую строку в блок vm provider config в файле Vagrant:
config.vm.provider "virtualbox" do |v|
v.customize ["setextradata", :id, "VBoxInternal2/SharedFoldersEnableSymlinksCreate/v-root", "1"]
end
Кроме того, на windows vagrant up должен быть запущен в оболочке с правами администратора. Никаких обходных путей не требуется.
Я пробовал все эти варианты для того, чтобы устранить ошибку запуска НПМ установки
.
Просто запустив бродяга в администратора строке и загрузка ВМ (бродяга перезагрузить
), решен вопрос.
Я вернулся и снял SharedFoldersEnableSymlinksCreate
конфигурацию в файл Vagrantfile, и все еще было нормально.
Тип синхронизируемых папок по умолчанию vboxsf
имеет известные проблемы с производительностью при работе с большим количеством файлов/каталогов, а также не поддерживает символические и жесткие ссылки (см. тикет 818 - ошибка 7+ летней давности). Избегайте его использования.
Лучшим выбором может стать синхронизированная папка типа rsync.
Вы упомянули о сбое, какую версию rsync вы используете? Попробуйте обновить его до 3.1.0 через brew, я знаю, что версия OOTB слишком старая (2.x), что может вызывать проблемы.
Провозившись час и попробовав несколько различных решений (vagrant-vbguest
, предложенное Marvin'ом исправление), я так и не смог заставить симлинки в общих папках работать с VirtualBox 4.8.10, Vagrant 1.5.1.
Я обнаружил, что более простым решением является настройка отдельной общей папки, а затем использование Ruby's File.readlink
для чтения основного пути:
config.vm.synced_folder File.readlink('SYMLINK'), "/mount/path"
Добавьте следующую строку в файл Vagrantfile:
config.vm.provider "virtualbox" do |v|
v.customize ["setextradata", :id, "VBoxInternal2/SharedFoldersEnableSymlinksCreate/v-root", "1"]
end
Это работало для меня только после того как я понижен в VirtualBox 6.0.8 на 6.0.4 и Бродяга 2.2.4 до 2.2.1.
когда вы открываете терминал ( я использовать Git Bash на Windows 10 с) с "Запуск от имени администратора" по.
также попробуйте в Git изменения Баш : в файле проекта: $ ВИМ .в git/config файл изменение симлинки = правда
[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