Vagrant与VirtualBox在Windows10上:"Rsync"未能在您的路径中找到

78

我在Windows 7系统上使用Vagrant有一段时间了。现在我有一台新的Windows 10 PC。我安装了Oracle Virtual Box和Vagrant,并尝试使用命令vagrant up启动虚拟机。 Vagrantfile文件是我在Windows 7系统上使用过的同一个文件。 以下是Vagrantfile的内容:

Vagrant.configure(2) do |config|
config.vm.box = "debian/jessie64"

config.vm.provider "virtualbox" do |v|
    v.customize ["modifyvm", :id, "--memory", "768"]
end
config.vm.provision :shell, path: "bootstrap.sh"

config.vm.network :private_network, ip: "172.27.146.17"
config.vm.hostname = "www.delevensstijl.hst1.nl"
config.hostsupdater.aliases = ["www.thelifestylemethod.hst1.nl"]

end

这是我收到的错误

我收到的错误信息是:"rsync" 未在您的 PATH 中找到。请确保 rsync 在您的系统上已正确安装并且可在 PATH 上使用。

为什么 Vagrant 要查找 rsync,因为我使用的是 Virtualbox?如何解决此错误?


1
Stefan,接受一个明显帮助了很多人并回答了你问题的答案,这将有利于社区友好性。 - xverges
8个回答

158

我在另一个论坛上发现,本地的Vagrant目录通过rsync挂载为“/vagrant”。这是在虚拟机中设置的,您可以通过打开

C:\Users\{your_username}\.vagrant.d\boxes\debian-VAGRANTSLASH-jessie64\8.2.2\virtualbox\Vagrantfile

查看该设置。

  config.vm.synced_folder \
    ".",
    "/vagrant",
    type: "rsync"

为了解决这个问题,我在本地的Vagrantfile中添加了以下行:

to get around this I added the following line in my local Vagrantfile

->

为了解决这个问题,我在本地Vagrantfile中添加了下面这行:

  config.vm.synced_folder ".", "/vagrant", type: "virtualbox"

错误已解决


35
良好的建议加上一,我在使用CentOS 7时遇到了相同的问题,因为虚拟机使用不同的路径,所以在您的本地Vagrantfile中等效的行是:config.vm.synced_folder ".", "/home/vagrant/sync", disabled: true - Till Kuhn
7
最新发布的centos/7镜像将默认同步目录更改为/vagrant,因此您需要更新@TillKuhn评论中显示的文件夹引用,即config.vm.synced_folder ".", "/vagrant", disabled: true。 https://seven.centos.org/2016/08/updated-centos-vagrant-images-available-v1607-01/ - Daniel Watrous
1
此问题可能会在更新后出现。Vagrantfile 文件已更改为当前运行的 box。 - Marcos Regis

38

当我在Windows 7上使用cent/7时,我通过以下方式解决了这个问题。

检查位于C:\ Users [username] \ .vagrant.d \ boxes \ centos-VAGRANTSLASH-7 \ 1602.02 \ virtualbox \ Vagrantfile的同步文件夹框。

config.vm.synced_folder ".", "/home/vagrant/sync", type: "rsync"   

覆盖项目Vagrantfile中的定义以进行目录映射。

config.vm.synced_folder ".", "/home/vagrant/sync", type: "virtualbox"  

我想象这个文件夹可能是在非Windows系统上准备的,在很多类似fedora/23-cloud-base的系统上也有可能发生这种情况。


11

这似乎是一个 bug。你可以在 这里 报告。但看起来你的 bug 已经作为 issue 6631 报告了。

不过,你可以尝试将 rsync 添加到你的 PATH 中并检查结果。你可以有两种方式实现:

  1. 安装 Cygwin,然后从其 Cygwin 终端启动 vagrant up
  2. 下载并解压缩 cwRsync

6
我在最新的Debian/Jessie Vagrant Box上错过了这个说明: 将同步文件夹的默认方法更改为rsync,因为vboxfs需要contrib或non-free软件包。因此,更新到Debian/Jessie的新版本是我需要使用rsync的原因。 - Stefan H
我在 CentOS 官方镜像 (centos/7) 上遇到了相同的错误信息。当 Cygwin 显示要安装的附加软件列表时,其中包含 rsync 软件包。 - Vladislav Rastrusny
@VladislavRastrusny 请尝试使用bento/centos-7.1,其中已预先安装了VirtualBox客户机附加组件。 - David
@David。是的,我已经切换到它了,直到本地图像被修复。如果它真的被修复的话;) - Vladislav Rastrusny

9
首先,这不是一个错误,在Windows上由于缺少rsync,这是预期的行为。
如果你遇到了这个问题,并且想要使用rsync作为同步文件夹的机制,那么你应该:
  1. https://mingw-w64.org/doku.php/download/cygwin下载Cygwin。
  2. 安装带有rsync + openssh模块的Cygwin。这很重要,因为它们在Windows上不存在(您可以在选择软件包阶段的安装过程中选择要安装的软件包)。
  3. x:\cygwin\bin(其中“x”是您安装Cygwin分发版的驱动器)添加到系统路径中。
  4. 重新启动计算机(在Windows 10上不需要)。
就这些。
感谢您的关注,祝您有愉快的一天 :-)

1
如果您已经安装了Cygwin或MobaXterm,那么以下是最有用的答案!对于MobaXterm的默认安装,要添加的路径为C:\Users\<username>\Documents\MobaXterm\slash\bin。对我来说,只需将其添加到PATH中即可,不需要添加到系统PATH中。 - absurd

4
在Windows7上使用Atlas的centos/7 box配合Vagrant/VirtualBox(版本为5.06)时,无法在路径中找到rsync。因此,建议通过cygwin安装(还有其他需要安装的东西,包括openssh)。但是并没有起作用。尝试将共享文件夹配置更改为“virtualbox”,而不是“rsync”,但仍然失败。忘记检查VirtualBox客户机附加组件是否在盒子中。结果发现没有。虽然Rsync效果更好,但最后仍然出现问题(无法切换到共享文件夹的源目录)。但是,“type:virtualbox”配置确实有效!因此,我们可以得出结论:在Windows 7上,只需要添加guest additions并将共享文件夹类型设置为“virtualbox”(覆盖盒子设置),即可与centos/7配合良好。而在MacOS上,则无需任何更改和guest additions即可顺利运行。

2

我在Windows 10上遇到了同样的问题。删除以下行可以帮助我解决问题:

目录:C:\Users\xxxxxxxxxxxxx.vagrant.d\boxes\manageiq-VAGRANTSLASH-euwe\5.1.0\virtualbox

文件:VagrantFile

需要删除的行:config.vm.synced_folder ".", "/home/vagrant/sync", type: "rsync"

下一步:

保存文件 打开cygwin终端 进入vagrant目录 运行“vagrant up”命令


想要补充一下,在更新了vagrant box之后,当vagrant想要启动更新版本时,Rath提到的路径中的Vagrantfile是随着box一起提供的(因此可能包含与您的环境不兼容的值)。此外,您可以简单地将值从“rsync”更改为“virtualbox”(如果virtualbox是您的VM引擎)。 - TomasH

1
我可以通过使用另一个来自 C:\Users{your_username}.vagrant.d\boxes\box\subfolder\virtualbox\Vagrantfile 的文件来解决这个问题。
然后添加:
# Load include vagrant file if it exists after the auto-generated
# so it can override any of the settings

include_vagrantfile = File.expand_path("../include/_Vagrantfile", __FILE__)

load include_vagrantfile if File.exist?(include_vagrantfile)

1
我已经尝试了上述建议,但没有帮助。 我使用的是Windows 7和vagrant 1.9.1,作为vm box我使用的是没有安装客户附加组件的centos 7。
要解决此问题,请将“vm.box”更改为预安装了客户端附加组件的框,例如: vm.box = "geerlingguy/centos7" 并确保未安装vbguest插件,因为会出现另一个错误 vagrant plugin list vagrant plugin uninstall vagrant-vbguest

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接