【问题标题】:npm install with Chef, lead to EACCES issue in my vagrant usernpm install with Chef,导致我的流浪用户出现 EACCES 问题
【发布时间】:2014-05-21 01:47:48
【问题描述】:

环境:Ubuntu Precise64 / Hosted Enterprise Chef / Vagrant

当我尝试通过 Chef 配方在我的应用文件夹中运行 NPM 安装时

execute "npm-install" do
  cwd "/home/my_user/my_nodejs_app"
  command "npm install"
  user "my_user"
  group "sudo"
  action :run
end

使用流浪盒

$ vagrant ssh
vagrant@precise64:~$ sudo chef-client

我收到此错误:

Mixlib::ShellOut::ShellCommandFailed
------------------------------------
Expected process to exit with [0], but received '3'
---- Begin output of npm install ----
STDOUT: 
STDERR: npm WARN package.json my_cookbook@0.0.0 No readme data.
npm ERR! Error: EACCES, mkdir '/home/vagrant/.npm'
npm ERR!  { [Error: EACCES, mkdir '/home/vagrant/.npm'] errno: 3, code: 'EACCES', path: '/home/vagrant/.npm' }
npm ERR! 
npm ERR! Please try running this command again as root/Administrator.

npm ERR! System Linux 3.5.0-23-generic
npm ERR! command "/usr/local/src/nvm/v0.8.26/bin/node" "/usr/local/src/nvm/v0.8.26/bin/npm" "install"
npm ERR! cwd /home/my_user/my_nodejs_app
npm ERR! node -v v0.8.26
npm ERR! npm -v 1.2.30
npm ERR! path /home/vagrant/.npm
npm ERR! code EACCES
npm ERR! errno 3
npm ERR! stack Error: EACCES, mkdir '/home/vagrant/.npm'
npm ERR! 
npm ERR! Additional logging details can be found in:
npm ERR!     /home/my_user/my_nodejs_app/npm-debug.log
npm ERR! not ok code 0
---- End output of npm install ----
Ran npm install returned 3

为什么 PATH 设置为 /home/vagrant/.npm,我可以解决这个问题吗?

【问题讨论】:

    标签: npm vagrant chef-infra


    【解决方案1】:

    执行资源不会接触环境,所以你必须自己设置HOME变量:

    execute "npm-install" do
      # ...
      environment "HOME" => "/home/my_user"
    end
    

    【讨论】:

    • 你对this problem有什么想法吗?
    • 谢谢@tmatilai !!!我遇到了完全相同的问题,但没有意识到可以设置环境属性来覆盖此行为。
    猜你喜欢
    • 2014-10-07
    • 2020-08-18
    • 2021-08-26
    • 2021-07-10
    • 2019-02-05
    • 1970-01-01
    • 1970-01-01
    • 2015-08-25
    • 1970-01-01
    相关资源
    最近更新 更多