首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >反复出现的空值错误:不允许对NFS资源上的操作“`create`”进行操作

反复出现的空值错误:不允许对NFS资源上的操作“`create`”进行操作
EN

Stack Overflow用户
提问于 2015-01-26 20:00:48
回答 3查看 6.4K关注 0票数 8

我有一个带厨师长的流浪汉盒子。除了NFS资源上的操作之外,一切都很好。例如,我有以下同步文件夹:

代码语言:javascript
复制
"host_path": "/Users/User/devbox/vdd/data",
        "guest_path": "/var/www",
        "type": "nfs"

在流浪汉的档案里:

代码语言:javascript
复制
 # Synced Folders.
    config_json["vm"]["synced_folders"].each do |folder|
      case folder["type"]
      when "nfs"
        config.vm.synced_folder folder["host_path"], folder["guest_path"], type: "nfs"
        # This uses uid and gid of the user that started vagrant.
        config.nfs.map_uid = Process.uid
        config.nfs.map_gid = Process.gid

我还有一个厨师食谱,它在nfs资源上执行一个create操作:

代码语言:javascript
复制
directory "/var/www" do
  owner "vagrant"
  group "vagrant"
end

但是,我一直收到以下错误:

代码语言:javascript
复制
 default: Error executing action `create` on resource 'directory[/var/www]'
==> default: ================================================================================
==> default: 
==> default: 
==> default: Errno::EPERM
==> default: ------------
==> default: Operation not permitted - /var/www
==> default: 
==> default: 
==> default: Resource Declaration:
==> default: ---------------------
==> default: # In /tmp/vagrant-chef-3/chef-solo-2/cookbooks/vdd/recipes/apache.rb
==> default: 
==> default:   1: directory "/var/www" do
==> default:   2:   owner "vagrant"
==> default:   3:   group "vagrant"
==> default:   4: end
==> default:   5: 
==> default: 
==> default: 
==> default: 
==> default: 
==> default: Compiled Resource:

解决问题(并保留nfs)的唯一方法是:

  1. nfs更改为default
  2. 运行vagrant reload --provision
  3. default更改为nfs
  4. 运行vagrant reload

我已经搜索并尝试了各种建议的解决方案,但到目前为止对我没有任何作用。

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2017-02-10 17:16:46

我通过传递after: :provision,选项,告诉迷航者在供应之后挂载nfs资源,从而解决了这个问题。下面是我的迷走片文件中的代码行:

代码语言:javascript
复制
config.bindfs.bind_folder "/var/nfs-#{i}", folder["guest_path"], after: :provision, perms: "u=rwX:g=rwX:o=rD", o: 'nonempty'
票数 1
EN

Stack Overflow用户

发布于 2015-07-25 17:17:45

操作不允许的问题很常见,在StackOverflow上问了很多问题,而且在我看过的每一个案例中,这都是因为虚拟机(Vagrant )正在尝试执行文件权限操作(chmod、chown、chgrp等等)。在一个目录中(通过NFS或其他方式)链接到主机操作系统(主计算机)上的文件系统。我不想让你对细节感到厌烦,但这会给某些人带来错误,有时也不会给其他人带来麻烦。您在评论中的解决方案说明了这一点!

如果您是受此问题影响的人之一,您必须确保您的文件共享除了来宾操作系统中的只读文件结构之外,不需要其他任何东西;任何需要更改或写入这些文件的内容,例如php composer.phar install (或其他更改/设置/写入文件的内容),都应该在主机上直接执行。

最后要指出的是,Vagrant (虚拟机)应该是一次性的,可以在一开始就销毁;而且,您正在从虚拟机运行代码,从而导致可能永远需要的文件作为项目的一部分,这在表面上违背了这一策略。

替代解决方案:

或者,如果您需要在虚拟化环境(如果愿意的话)中运行代码,需要不受限制地访问该客户操作系统的权限功能,那么只需在其目录树的位置运行代码,该目录树不受本地对来宾“文件夹源”到“文件夹目标”映射的影响。如果是基于Linux的话,可以使用mount命令从Vagrant中分辨出哪个文件夹在这个范围内。

票数 6
EN

Stack Overflow用户

发布于 2016-02-10 09:38:02

这是一个更重要的评论,而不是一个答案。在我的迷航配置中,我“意外地(误解-ly)”运行了$ sudo vagrant up (正确地运行了$ vagrant destroy dev- -这就使本地(主机)文件共享更改为# root,当我重新运行$ vagrant up时,新的$ vagrant up无法使用# root创建的“流浪者”文件夹(尽管我没有更多的vm)。

代码语言:javascript
复制
^
|
hard to explain easy to actually understand

TL;DR如果您使用sudo和迷航器,您需要手动删除/减少主机上的剩余更改为非sudo。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/28157780

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档