Настраивая коробку и конфигурацию Vagrant для Linux, я смотрю на следующую проблему:

На этапе предоставления я устанавливаю Subversion. Я хотел бы также на этапе подготовки отредактировать файл ~/.subversion/servers так, чтобы он получал необходимые настройки прокси.

Я знаю, как это сделать (используя sed), однако есть одна загвоздка.

~/.subversion не существует на данный момент.

Каталог ~/.subversion фактически не создается до тех пор, пока вы сначала не вызовете svn info , svn status или что-то еще.

Поэтому я добавил в свой Vagrantfile ...

config.vm.provision "shell", inline: "svn info 2>/dev/null"

... и команда действительно выполняется (с ошибкой, поскольку, конечно, нет рабочего каталога для вызова info )...

==> default: Running provisioner: shell...
    default: Running: inline script
The SSH command responded with a non-zero exit status. Vagrant
assumes that this means the command failed. The output for this command
should be in the log above. Please read the output to determine what
went wrong.

... но до сих пор нет ~/subversion .

Я не совсем понимаю, почему svn info , которая делает трюк (с настройкой ~/.subversion), работает нормально, когда я вошел в систему на виртуальной машине (через vagrant ssh), но не выполняется при выполнении во время инициализации, как показано выше.

Как я могу инициализировать ~/.subversion на этапе инициализации Vagrant (без реального доступа к реальному репо)?

1 ответ1

0

config.vm.provision "shell", inline: "svn info 2>/dev/null"

Эта строка запускается от имени пользователя root.

Следовательно, он не устанавливает ~vagrant/.subversion , но /root/.subversion .

Решением является запуск строки от имени пользователя vagrant:

config.vm.provision "shell", inline: "svn info 2>/dev/null", privileged: false

Более того, запустите команду "svn info 2>/dev/null; true" - это избавит Vagrant от сообщения о том, что команда обеспечения вернулась с ненулевым состоянием выхода.

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .