windows - 每次我使用 vagrant up 时,Vagrant 都会重置 .vagrant 目录

标签 windows laravel vagrant virtualbox

我的环境:

  • 操作系统:win8.1
  • Vagrant :1.6.3
  • 虚拟盒子:4.3.12r93733
  • Vagrant 操作系统:laravel/Homestead flavor

情况: 我注意到,在“vagrant suspend”和计算机重启(第二天的工作)之后,当我运行“vagrant up”时,.vagrant 目录中的所有文件都在“up”过程中被删除,并创建了一个新的 VBox 实例。这意味着我丢失了所有以前的配置,例如 DB、npm 安装和挂载。是的,丢失的配置大部分都可以通过保存的脚本获得,但每次这样做真的很痛苦!

我目前的修复: 目前,每次发生这种情况时,我都需要运行“VBoxManage list vms”来检索正确的 ID。然后我“Vagrant 暂停”新的不需要的实例,将其从 Oracle VM VirtualBox Manage 中删除,将旧 ID 粘贴到“.vagrant”中的“id”文件中,然后再次运行“vagrant up”。这次成功了!

每次运行“vagrant up”之前,我都会检查 id 文件,正确的 id 就在那里。 我也尝试过“vagrant resume”,但没有任何区别。

Vagrantfile 和配置文件几乎是 Homestead 包中的标准配置。我所做的唯一更改是在 Vagrantfile 中允许符号链接(symbolic link)(这是一个解决 NODE、npm 和 Windows 限制为 260 个字符目录路径的完全独立问题的方法)。这是我为这个目录长度问题添加的额外内容。

config.vm.provider "virtualbox" do |vb|
 # SEE https://github.com/fideloper/Vaprobash/issues/183
 vb.customize ["setextradata", :id, "VBoxInternal2/SharedFoldersEnableSymlinksCreate/vagrant", "1"]
end

我做错了什么?为什么 Vagrant 每次都创建一个新的 VM 实例?

更新:

我发现问题与运行 CLI(我通常使用 cygwin)和具有管理员权限的 Oracles VBox 管理器有关。我还发现我的一些 VM 保存在 C:\cygwin64\home 下...我可以在以管理员身份运行 cygwin 终端时使用它们。如果我也以管理员身份运行,我可以在 Oracle VirtualBox Manager 中看到它们。 其他 VM 存储在 C:\Users... 中,当我以普通用户(具有管理员权限)运行 oracle VBox 管理器时,我可以看到它们。

我还是有点不明白这一切是怎么发生的。

最佳答案

我找到了问题的答案,希望它能帮助其他人。

问题是一些虚拟机位于我的 C:/cygwin64/home 目录中,它们属于管理员,如果我以“管理员身份”打开它,它们也只能在 Oracles VirtualBox Manager 上看到。其他 VM 在 C:/Users/[用户名]/VirtualBox VM 中,它们归我的用户帐户所有,只有在我正常打开应用程序时才能看到。

我正常打开我的 Cygwin,因此无法正确地恢复虚拟机(仍然有点困惑为什么每次重置 ID 似乎都有效)。

我的解决方案:借助 thomthom 的回答

在 Oracles VirtualBox Mangager 中,我将默认机器文件夹(文件->首选项->常规)更改为 C:/Users/[用户名]/VirtualBox VMs。然后,我克隆了每个 VM,以便它们最终位于新目录中。然后我完全删除了位于 cygwin 文件夹中的旧 VM(右键单击 -> 删除)。 然后我关闭了 Cygwin 和 VirtualBox Manager 并以普通用户身份重新打开(VirtualBox Manager 没有显示任何内容!)

最后,我进入新目录并双击每个 VM,以便将其添加回 VirtualBox 管理器,然后,从命令行运行 VBoxManage list vms 以获取克隆的新 ID,将该 ID 复制到我项目中的 id 文件(类似于 PROJECT\.vagrant\machines\default\virtualbox\id

现在我可以以普通用户身份使用 cygwin 运行 vagrants“vagrant up”命令,一切正常。

教训: 非常清楚您运行初始 VM 创建的用户,也非常清楚 VirtualBox 管理器将您的 VM 存储在哪里。

关于windows - 每次我使用 vagrant up 时,Vagrant 都会重置 .vagrant 目录,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24666951/

相关文章:

php - 使用带密码的 Redis 和 Laravel

Laravel session 中间件损坏

docker compose、vagrant 和不安全的存储库

javascript - Windows Snap Assist 找不到我的 Electron 应用程序

python - Py2Exe 错误 : error: [Errno 2] No such file or directory: run-py3. 5-win32.exe'

php - 仅当用户在 Laravel 5.7 中处于事件状态时才登录用户

magento - Magento 是否有现有维护良好的 Vagrant 厨师食谱?

linux - 在 Linux 主机上使用 winrm 通信器

java - 你如何在 Windows 上 merge GIT?

php - 微型网络 - 无法让 php.exe 返回数据