由于 MacOS Catalina beta 更新,Vagrant 安装 NFS 失败

Vagrant failing on mounting NFS due to MacOS Catalina beta update

我最近更新到 MacOS Catalina 并开始了一些开发工作。问题是当我在终端上 "vagrant up" 时,NFS 共享文件夹无法挂载,我被迫使用 rsync。但是,rsync 不允许我在工作中无缝使用 git。我发现发生这种情况的原因是因为新的 MacOS 创建了多个卷,所以 vagrant 混淆了文档中文件的根目录可能是: MacOS Disk Image

有没有什么方法可以在 /etc/exports 文件中将根设置为不同的内容,而不用它替换每个 vagrant up 上的导出文件?令人遗憾的是,根不再只是“/...”,在这个新的 MacOS 中它是 "System/Volumes/Data/...",但是“/”上的所有内容都有一个副本,因此 vagrant 对将哪个用作根感到困惑。

我在尝试 vagrant up 时反复收到此错误消息: Terminal Image

对我来说,这是解决方案: https://github.com/hashicorp/vagrant/issues/10961#issuecomment-526132132

"workaround is to add /System/Volumes/Data/... to your paths in VagrantFile and /etc/exports"

对我来说,github 问题 (https://github.com/hashicorp/vagrant/issues/10961#issuecomment-526132132) 中建议的解决方法采用以下形式,因此它不会破坏非 Catalina 主机:

nfsPath = "."
if Dir.exist?("/System/Volumes/Data")
    nfsPath = "/System/Volumes/Data" + Dir.pwd
end
config.vm.synced_folder nfsPath, "/vagrant", type: "nfs"

这仍然需要您从 /etc/exports 中删除现有的 nfs 导出,否则 vagrant 会抱怨 /etc/exports 文件中的内容与 Vagrantfile 中配置的内容不匹配。

经过鼓捣,我找到了解决办法。对我来说,我必须更新所有内容,包括 vagrant (v2.2.6) 和 virtual box。

然后,在 MacOS Catalina 中,导航至系统偏好设置 → 安全和隐私 → 隐私 → 全磁盘访问并按“+”,然后按 Command-Shift-G 并进入 /sbin 目录并找到 nfsd 文件并将其添加到完整磁盘访问。

然后对你的 /etc/exports 执行 nano 并删除文件中的所有内容,vagrant up 应该可以完美运行!