4

我们需要与 Linux、MacOS 和 Windows 主机共享虚拟机。但是,对于 Linux 和 MacOS,建议使用 NFS 共享,但对于 Windows,不支持 NFS 共享。

有没有办法检测到主机操作系统是 Windows 并禁用 NFS 共享?

4

1 回答 1

6

流浪者 1.2.5

这实际上已经从 Vagrant 1.2.5 开始处理,请参阅Option for NFS 在 Windows 主机上不会被静默忽略以及相应的提交b2d1a26(NFS 请求在 Windows 上被静默忽略)

@__synced_folders.each do |id, options|
  # Ignore NFS on Windows
  if options[:nfs] && Vagrant::Util::Platform.windows?
    options[:nfs] = false
  end
end

以前的解决方法

如果您无法升级,您可能想尝试 Ryan Seekely 的Vagrant 并仅在非 Windows 主机上使用 NFS

好吧,既然 Vagrantfile 只是一个 Ruby 脚本,我们可以直接使用 Ruby!在 Vagrantfile 的顶部定义:

def Kernel.is_windows?
    # Detect if we are running on Windows
    processor, platform, *rest = RUBY_PLATFORM.split("-")
    platform == 'mingw32'
end

然后在配置共享文件夹时:

nfs = !Kernel.is_windows?
config.vm.share_folder "myfolder", "/srv/www/myfolder.com/", "../", :nfs => nfs

请注意,我实际上并没有测试过这个特定的解决方案,但我自己之前一直在使用一种概念上相似的方法,尽管Vagrant::Util::Platform.windows?在官方提交中使用了(现在手头不方便......)。

于 2013-08-26T20:01:49.297 回答