npm package failed to install with error Errno::ENOENT No such file or directory - npm
Closed this issue · 5 comments
Cookbook version
nodejs 2.4.4 (I have the issue with v6.0.0 as well)
Chef-client version
chef-client 14.14.29
Platform Details
"cat /etc/centos-release"
CentOS Linux release 7.7.1908 (Core)
Scenario:
The wrapper cookbook installs the pm2 npm package with the nodejs_npm (npm_package on newer versions of the cookbook) resource.
If I log into the test-kitchen vagrant VM, I can install the package manually with npm install -G pm2.
Steps to Reproduce:
[If you are filing an issue what are the things we need to do in order to repro your problem? How are you using this cookbook or any resources it includes?]
The wrapper cookbook sets additional packages that should be installed via pm:
- Node attribute set:
nodejs:
additional_packages:
- 'pm2'
node['nodejs']['additional_packages'].each do |mod|
nodejs_npm mod
end
Expected Result:
That PM2 package will be installed via npm.
Actual Result:
pm2 fails to install with the error: Errno::ENOENT No such file or directory - npm
Recipe: nfl-nodeapps::default
* nodejs_npmÄpm2Å action installÄ2020-05-04T14:07:32+00:00Å INFO: Processing nodejs_npmÄpm2Å action install (nfl-nodeapps::default line 45)
* executeÄinstall NPM package pm2Å action runÄ2020-05-04T14:07:32+00:00Å INFO: Processing executeÄinstall NPM package pm2Å action run (/tmp/kitchen/cache/cookbooks/nodejs/providers/npm.rb line 6)
================================================================================
Error executing action éruné on resource 'executeÄinstall NPM package pm2Å'
================================================================================
Errno::ENOENT
-------------
No such file or directory - npm
Cookbook Trace:
---------------
/tmp/kitchen/cache/cookbooks/nodejs/libraries/nodejs_helper.rb:25:in énpm_list'
/tmp/kitchen/cache/cookbooks/nodejs/libraries/nodejs_helper.rb:39:in énpm_package_installed?'
/tmp/kitchen/cache/cookbooks/nodejs/providers/npm.rb:37:in épackage_installed?'
/tmp/kitchen/cache/cookbooks/nodejs/providers/npm.rb:12:in éblock (3 levels) in class_from_file'
Resource Declaration:
---------------------
# In /tmp/kitchen/cache/cookbooks/nodejs/providers/npm.rb
6: execute "install NPM package #änew_resource.nameå" do
7: cwd new_resource.path
8: command "npm install #änpm_optionså"
9: user new_resource.user
10: group new_resource.group
11: environment npm_env_vars
12: not_if ä package_installed? å
13: end
14: end
Compiled Resource:
------------------
# Declared in /tmp/kitchen/cache/cookbooks/nodejs/providers/npm.rb:6:in éblock in class_from_file'
execute("install NPM package pm2") do
action Ä:runÅ
default_guard_interpreter :execute
command "npm install -global pm2"
backup 5
declared_type :execute
cookbook_name "nfl-nodeapps"
domain nil
user nil
cwd nil
environment äå
group nil
not_if ä #code block å
end
System Info:
------------
chef_version=14.14.29
platform=centos
platform_version=7.7.1908
ruby=ruby 2.5.7p206 (2019-10-01 revision 67816) Äx86_64-linuxÅ
program_name=/opt/chef/bin/chef-client
executable=/opt/chef/bin/chef-client
Ä2020-05-04T14:07:32+00:00Å INFO: Running queued delayed notifications before re-raising exception
================================================================================
Error executing action éinstallé on resource 'nodejs_npmÄpm2Å'
================================================================================
Errno::ENOENT
-------------
executeÄinstall NPM package pm2Å (/tmp/kitchen/cache/cookbooks/nodejs/providers/npm.rb line 6) had an error: Errno::ENOENT: No such file or directory - npm
Cookbook Trace:
---------------
/tmp/kitchen/cache/cookbooks/nodejs/libraries/nodejs_helper.rb:25:in énpm_list'
/tmp/kitchen/cache/cookbooks/nodejs/libraries/nodejs_helper.rb:39:in énpm_package_installed?'
/tmp/kitchen/cache/cookbooks/nodejs/providers/npm.rb:37:in épackage_installed?'
/tmp/kitchen/cache/cookbooks/nodejs/providers/npm.rb:12:in éblock (3 levels) in class_from_file'
Resource Declaration:
---------------------
# In /tmp/kitchen/cache/cookbooks/nfl-nodeapps/recipes/default.rb
45: nodejs_npm mod
46: end
Compiled Resource:
------------------
# Declared in /tmp/kitchen/cache/cookbooks/nfl-nodeapps/recipes/default.rb:45:in éblock in from_file'
nodejs_npm("pm2") do
action Ä:installÅ
default_guard_interpreter :default
declared_type :nodejs_npm
cookbook_name "nfl-nodeapps"
recipe_name "default"
end
System Info:
------------
chef_version=14.14.29
platform=centos
platform_version=7.7.1908
ruby=ruby 2.5.7p206 (2019-10-01 revision 67816) Äx86_64-linuxÅ
program_name=/opt/chef/bin/chef-client
executable=/opt/chef/bin/chef-client
Ä2020-05-04T14:07:32+00:00Å INFO: Running queued delayed notifications before re-raising exception
Running handlers:
Ä2020-05-04T14:07:32+00:00Å ERROR: Running exception handlers
Running handlers complete
Ä2020-05-04T14:07:32+00:00Å ERROR: Exception handlers complete
Chef Client failed. 195 resources updated in 01 minutes 55 seconds
Ä2020-05-04T14:07:32+00:00Å FATAL: Stacktrace dumped to /tmp/kitchen/cache/chef-stacktrace.out
Ä2020-05-04T14:07:32+00:00Å FATAL: Please provide the contents of the stacktrace.out file if you file a bug report
Ä2020-05-04T14:07:32+00:00Å DEBUG: Errno::ENOENT: nodejs_npmÄpm2Å (nfl-nodeapps::default line 45) had an error: Errno::ENOENT: executeÄinstall NPM package pm2Å (/tmp/kitchen/cache/cookbooks/nodejs/providers/npm.rb line 6) had an error: Errno::ENOENT: No such file or directory - npm
/opt/chef/embedded/lib/ruby/gems/2.5.0/gems/mixlib-shellout-2.4.4/lib/mixlib/shellout/unix.rb:340:in éexec'
/opt/chef/embedded/lib/ruby/gems/2.5.0/gems/mixlib-shellout-2.4.4/lib/mixlib/shellout/unix.rb:340:in éblock in fork_subprocess'
/opt/chef/embedded/lib/ruby/gems/2.5.0/gems/mixlib-shellout-2.4.4/lib/mixlib/shellout/unix.rb:318:in éfork'
/opt/chef/embedded/lib/ruby/gems/2.5.0/gems/mixlib-shellout-2.4.4/lib/mixlib/shellout/unix.rb:318:in éfork_subprocess'
/opt/chef/embedded/lib/ruby/gems/2.5.0/gems/mixlib-shellout-2.4.4/lib/mixlib/shellout/unix.rb:95:in érun_command'
/opt/chef/embedded/lib/ruby/gems/2.5.0/gems/mixlib-shellout-2.4.4/lib/mixlib/shellout.rb:267:in érun_command'
/tmp/kitchen/cache/cookbooks/nodejs/libraries/nodejs_helper.rb:25:in énpm_list'
/tmp/kitchen/cache/cookbooks/nodejs/libraries/nodejs_helper.rb:39:in énpm_package_installed?'
/tmp/kitchen/cache/cookbooks/nodejs/providers/npm.rb:37:in épackage_installed?'
/opt/chef/embedded/lib/ruby/gems/2.5.0/gems/chef-14.14.29/lib/chef/resource.rb:1317:in émethod_missing'
/tmp/kitchen/cache/cookbooks/nodejs/providers/npm.rb:12:in éblock (3 levels) in class_from_file'
/opt/chef/embedded/lib/ruby/gems/2.5.0/gems/chef-14.14.29/lib/chef/resource/conditional.rb:106:in éevaluate_block'
/opt/chef/embedded/lib/ruby/gems/2.5.0/gems/chef-14.14.29/lib/chef/resource/conditional.rb:95:in éevaluate'
/opt/chef/embedded/lib/ruby/gems/2.5.0/gems/chef-14.14.29/lib/chef/resource/conditional.rb:88:in écontinue?'
/opt/chef/embedded/lib/ruby/gems/2.5.0/gems/chef-14.14.29/lib/chef/resource.rb:1526:in éblock in should_skip?'
/opt/chef/embedded/lib/ruby/gems/2.5.0/gems/chef-14.14.29/lib/chef/resource.rb:1525:in éeach'
/opt/chef/embedded/lib/ruby/gems/2.5.0/gems/chef-14.14.29/lib/chef/resource.rb:1525:in éfind'
/opt/chef/embedded/lib/ruby/gems/2.5.0/gems/chef-14.14.29/lib/chef/resource.rb:1525:in éshould_skip?'
/opt/chef/embedded/lib/ruby/gems/2.5.0/gems/chef-14.14.29/lib/chef/resource.rb:577:in érun_action'
/opt/chef/embedded/lib/ruby/gems/2.5.0/gems/chef-14.14.29/lib/chef/runner.rb:74:in érun_action'
/opt/chef/embedded/lib/ruby/gems/2.5.0/gems/chef-14.14.29/lib/chef/runner.rb:108:in éblock in run_all_actions'
/opt/chef/embedded/lib/ruby/gems/2.5.0/gems/chef-14.14.29/lib/chef/runner.rb:108:in éeach'
/opt/chef/embedded/lib/ruby/gems/2.5.0/gems/chef-14.14.29/lib/chef/runner.rb:108:in érun_all_actions'
/opt/chef/embedded/lib/ruby/gems/2.5.0/gems/chef-14.14.29/lib/chef/runner.rb:132:in éblock in converge'
/opt/chef/embedded/lib/ruby/gems/2.5.0/gems/chef-14.14.29/lib/chef/resource_collection/resource_list.rb:94:in éblock in execute_each_resource'
/opt/chef/embedded/lib/ruby/gems/2.5.0/gems/chef-14.14.29/lib/chef/resource_collection/stepable_iterator.rb:114:in écall_iterator_block'
/opt/chef/embedded/lib/ruby/gems/2.5.0/gems/chef-14.14.29/lib/chef/resource_collection/stepable_iterator.rb:85:in éstep'
/opt/chef/embedded/lib/ruby/gems/2.5.0/gems/chef-14.14.29/lib/chef/resource_collection/stepable_iterator.rb:103:in éiterate'
/opt/chef/embedded/lib/ruby/gems/2.5.0/gems/chef-14.14.29/lib/chef/resource_collection/stepable_iterator.rb:55:in éeach_with_index'
/opt/chef/embedded/lib/ruby/gems/2.5.0/gems/chef-14.14.29/lib/chef/resource_collection/resource_list.rb:92:in éexecute_each_resource'
/opt/chef/embedded/lib/ruby/gems/2.5.0/gems/chef-14.14.29/lib/chef/runner.rb:130:in éconverge'
/opt/chef/embedded/lib/ruby/gems/2.5.0/gems/chef-14.14.29/lib/chef/provider.rb:239:in écompile_and_converge_action'
(eval):2:in éaction_install'
/opt/chef/embedded/lib/ruby/gems/2.5.0/gems/chef-14.14.29/lib/chef/provider.rb:182:in érun_action'
/opt/chef/embedded/lib/ruby/gems/2.5.0/gems/chef-14.14.29/lib/chef/resource.rb:578:in érun_action'
/opt/chef/embedded/lib/ruby/gems/2.5.0/gems/chef-14.14.29/lib/chef/runner.rb:74:in érun_action'
/opt/chef/embedded/lib/ruby/gems/2.5.0/gems/chef-14.14.29/lib/chef/runner.rb:108:in éblock in run_all_actions'
/opt/chef/embedded/lib/ruby/gems/2.5.0/gems/chef-14.14.29/lib/chef/runner.rb:108:in éeach'
/opt/chef/embedded/lib/ruby/gems/2.5.0/gems/chef-14.14.29/lib/chef/runner.rb:108:in érun_all_actions'
/opt/chef/embedded/lib/ruby/gems/2.5.0/gems/chef-14.14.29/lib/chef/runner.rb:132:in éblock in converge'
/opt/chef/embedded/lib/ruby/gems/2.5.0/gems/chef-14.14.29/lib/chef/resource_collection/resource_list.rb:94:in éblock in execute_each_resource'
/opt/chef/embedded/lib/ruby/gems/2.5.0/gems/chef-14.14.29/lib/chef/resource_collection/stepable_iterator.rb:114:in écall_iterator_block'
/opt/chef/embedded/lib/ruby/gems/2.5.0/gems/chef-14.14.29/lib/chef/resource_collection/stepable_iterator.rb:85:in éstep'
/opt/chef/embedded/lib/ruby/gems/2.5.0/gems/chef-14.14.29/lib/chef/resource_collection/stepable_iterator.rb:103:in éiterate'
/opt/chef/embedded/lib/ruby/gems/2.5.0/gems/chef-14.14.29/lib/chef/resource_collection/stepable_iterator.rb:55:in éeach_with_index'
/opt/chef/embedded/lib/ruby/gems/2.5.0/gems/chef-14.14.29/lib/chef/resource_collection/resource_list.rb:92:in éexecute_each_resource'
/opt/chef/embedded/lib/ruby/gems/2.5.0/gems/chef-14.14.29/lib/chef/runner.rb:130:in éconverge'
/opt/chef/embedded/lib/ruby/gems/2.5.0/gems/chef-14.14.29/lib/chef/client.rb:720:in éblock in converge'
/opt/chef/embedded/lib/ruby/gems/2.5.0/gems/chef-14.14.29/lib/chef/client.rb:715:in écatch'
/opt/chef/embedded/lib/ruby/gems/2.5.0/gems/chef-14.14.29/lib/chef/client.rb:715:in éconverge'
/opt/chef/embedded/lib/ruby/gems/2.5.0/gems/chef-14.14.29/lib/chef/client.rb:754:in éconverge_and_save'
/opt/chef/embedded/lib/ruby/gems/2.5.0/gems/chef-14.14.29/lib/chef/client.rb:286:in érun'
/opt/chef/embedded/lib/ruby/gems/2.5.0/gems/chef-14.14.29/lib/chef/application.rb:303:in érun_with_graceful_exit_option'
/opt/chef/embedded/lib/ruby/gems/2.5.0/gems/chef-14.14.29/lib/chef/application.rb:279:in éblock in run_chef_client'
/opt/chef/embedded/lib/ruby/gems/2.5.0/gems/chef-14.14.29/lib/chef/local_mode.rb:44:in éwith_server_connectivity'
/opt/chef/embedded/lib/ruby/gems/2.5.0/gems/chef-14.14.29/lib/chef/application.rb:261:in érun_chef_client'
/opt/chef/embedded/lib/ruby/gems/2.5.0/gems/chef-14.14.29/lib/chef/application/client.rb:449:in érun_application'
/opt/chef/embedded/lib/ruby/gems/2.5.0/gems/chef-14.14.29/lib/chef/application.rb:66:in érun'
/opt/chef/embedded/lib/ruby/gems/2.5.0/gems/chef-14.14.29/bin/chef-client:25:in é<top (required)>'
/opt/chef/bin/chef-client:81:in éload'
/opt/chef/bin/chef-client:81:in é<main>'
>>>> Caused by Errno::ENOENT: No such file or directory - npm
/opt/chef/embedded/lib/ruby/gems/2.5.0/gems/mixlib-shellout-2.4.4/lib/mixlib/shellout/unix.rb:340:in éexec'
/opt/chef/embedded/lib/ruby/gems/2.5.0/gems/mixlib-shellout-2.4.4/lib/mixlib/shellout/unix.rb:340:in éblock in fork_subprocess'
/opt/chef/embedded/lib/ruby/gems/2.5.0/gems/mixlib-shellout-2.4.4/lib/mixlib/shellout/unix.rb:318:in éfork'
/opt/chef/embedded/lib/ruby/gems/2.5.0/gems/mixlib-shellout-2.4.4/lib/mixlib/shellout/unix.rb:318:in éfork_subprocess'
/opt/chef/embedded/lib/ruby/gems/2.5.0/gems/mixlib-shellout-2.4.4/lib/mixlib/shellout/unix.rb:95:in érun_command'
/opt/chef/embedded/lib/ruby/gems/2.5.0/gems/mixlib-shellout-2.4.4/lib/mixlib/shellout.rb:267:in érun_command'
/tmp/kitchen/cache/cookbooks/nodejs/libraries/nodejs_helper.rb:25:in énpm_list'
/tmp/kitchen/cache/cookbooks/nodejs/libraries/nodejs_helper.rb:39:in énpm_package_installed?'
/tmp/kitchen/cache/cookbooks/nodejs/providers/npm.rb:37:in épackage_installed?'
/opt/chef/embedded/lib/ruby/gems/2.5.0/gems/chef-14.14.29/lib/chef/resource.rb:1317:in émethod_missing'
/tmp/kitchen/cache/cookbooks/nodejs/providers/npm.rb:12:in éblock (3 levels) in class_from_file'
/opt/chef/embedded/lib/ruby/gems/2.5.0/gems/chef-14.14.29/lib/chef/resource/conditional.rb:106:in éevaluate_block'
/opt/chef/embedded/lib/ruby/gems/2.5.0/gems/chef-14.14.29/lib/chef/resource/conditional.rb:95:in éevaluate'
/opt/chef/embedded/lib/ruby/gems/2.5.0/gems/chef-14.14.29/lib/chef/resource/conditional.rb:88:in écontinue?'
/opt/chef/embedded/lib/ruby/gems/2.5.0/gems/chef-14.14.29/lib/chef/resource.rb:1526:in éblock in should_skip?'
/opt/chef/embedded/lib/ruby/gems/2.5.0/gems/chef-14.14.29/lib/chef/resource.rb:1525:in éeach'
/opt/chef/embedded/lib/ruby/gems/2.5.0/gems/chef-14.14.29/lib/chef/resource.rb:1525:in éfind'
/opt/chef/embedded/lib/ruby/gems/2.5.0/gems/chef-14.14.29/lib/chef/resource.rb:1525:in éshould_skip?'
/opt/chef/embedded/lib/ruby/gems/2.5.0/gems/chef-14.14.29/lib/chef/resource.rb:577:in érun_action'
/opt/chef/embedded/lib/ruby/gems/2.5.0/gems/chef-14.14.29/lib/chef/runner.rb:74:in érun_action'
/opt/chef/embedded/lib/ruby/gems/2.5.0/gems/chef-14.14.29/lib/chef/runner.rb:108:in éblock in run_all_actions'
/opt/chef/embedded/lib/ruby/gems/2.5.0/gems/chef-14.14.29/lib/chef/runner.rb:108:in éeach'
/opt/chef/embedded/lib/ruby/gems/2.5.0/gems/chef-14.14.29/lib/chef/runner.rb:108:in érun_all_actions'
/opt/chef/embedded/lib/ruby/gems/2.5.0/gems/chef-14.14.29/lib/chef/runner.rb:132:in éblock in converge'
/opt/chef/embedded/lib/ruby/gems/2.5.0/gems/chef-14.14.29/lib/chef/resource_collection/resource_list.rb:94:in éblock in execute_each_resource'
/opt/chef/embedded/lib/ruby/gems/2.5.0/gems/chef-14.14.29/lib/chef/resource_collection/stepable_iterator.rb:114:in écall_iterator_block'
/opt/chef/embedded/lib/ruby/gems/2.5.0/gems/chef-14.14.29/lib/chef/resource_collection/stepable_iterator.rb:85:in éstep'
/opt/chef/embedded/lib/ruby/gems/2.5.0/gems/chef-14.14.29/lib/chef/resource_collection/stepable_iterator.rb:103:in éiterate'
/opt/chef/embedded/lib/ruby/gems/2.5.0/gems/chef-14.14.29/lib/chef/resource_collection/stepable_iterator.rb:55:in éeach_with_index'
/opt/chef/embedded/lib/ruby/gems/2.5.0/gems/chef-14.14.29/lib/chef/resource_collection/resource_list.rb:92:in éexecute_each_resource'
/opt/chef/embedded/lib/ruby/gems/2.5.0/gems/chef-14.14.29/lib/chef/runner.rb:130:in éconverge'
/opt/chef/embedded/lib/ruby/gems/2.5.0/gems/chef-14.14.29/lib/chef/provider.rb:239:in écompile_and_converge_action'
(eval):2:in éaction_install'
/opt/chef/embedded/lib/ruby/gems/2.5.0/gems/chef-14.14.29/lib/chef/provider.rb:182:in érun_action'
/opt/chef/embedded/lib/ruby/gems/2.5.0/gems/chef-14.14.29/lib/chef/resource.rb:578:in érun_action'
/opt/chef/embedded/lib/ruby/gems/2.5.0/gems/chef-14.14.29/lib/chef/runner.rb:74:in érun_action'
/opt/chef/embedded/lib/ruby/gems/2.5.0/gems/chef-14.14.29/lib/chef/runner.rb:108:in éblock in run_all_actions'
/opt/chef/embedded/lib/ruby/gems/2.5.0/gems/chef-14.14.29/lib/chef/runner.rb:108:in éeach'
/opt/chef/embedded/lib/ruby/gems/2.5.0/gems/chef-14.14.29/lib/chef/runner.rb:108:in érun_all_actions'
/opt/chef/embedded/lib/ruby/gems/2.5.0/gems/chef-14.14.29/lib/chef/runner.rb:132:in éblock in converge'
/opt/chef/embedded/lib/ruby/gems/2.5.0/gems/chef-14.14.29/lib/chef/resource_collection/resource_list.rb:94:in éblock in execute_each_resource'
/opt/chef/embedded/lib/ruby/gems/2.5.0/gems/chef-14.14.29/lib/chef/resource_collection/stepable_iterator.rb:114:in écall_iterator_block'
/opt/chef/embedded/lib/ruby/gems/2.5.0/gems/chef-14.14.29/lib/chef/resource_collection/stepable_iterator.rb:85:in éstep'
/opt/chef/embedded/lib/ruby/gems/2.5.0/gems/chef-14.14.29/lib/chef/resource_collection/stepable_iterator.rb:103:in éiterate'
/opt/chef/embedded/lib/ruby/gems/2.5.0/gems/chef-14.14.29/lib/chef/resource_collection/stepable_iterator.rb:55:in éeach_with_index'
/opt/chef/embedded/lib/ruby/gems/2.5.0/gems/chef-14.14.29/lib/chef/resource_collection/resource_list.rb:92:in éexecute_each_resource'
/opt/chef/embedded/lib/ruby/gems/2.5.0/gems/chef-14.14.29/lib/chef/runner.rb:130:in éconverge'
/opt/chef/embedded/lib/ruby/gems/2.5.0/gems/chef-14.14.29/lib/chef/client.rb:720:in éblock in converge'
/opt/chef/embedded/lib/ruby/gems/2.5.0/gems/chef-14.14.29/lib/chef/client.rb:715:in écatch'
/opt/chef/embedded/lib/ruby/gems/2.5.0/gems/chef-14.14.29/lib/chef/client.rb:715:in éconverge'
/opt/chef/embedded/lib/ruby/gems/2.5.0/gems/chef-14.14.29/lib/chef/client.rb:754:in éconverge_and_save'
/opt/chef/embedded/lib/ruby/gems/2.5.0/gems/chef-14.14.29/lib/chef/client.rb:286:in érun'
/opt/chef/embedded/lib/ruby/gems/2.5.0/gems/chef-14.14.29/lib/chef/application.rb:303:in érun_with_graceful_exit_option'
/opt/chef/embedded/lib/ruby/gems/2.5.0/gems/chef-14.14.29/lib/chef/application.rb:279:in éblock in run_chef_client'
/opt/chef/embedded/lib/ruby/gems/2.5.0/gems/chef-14.14.29/lib/chef/local_mode.rb:44:in éwith_server_connectivity'
/opt/chef/embedded/lib/ruby/gems/2.5.0/gems/chef-14.14.29/lib/chef/application.rb:261:in érun_chef_client'
/opt/chef/embedded/lib/ruby/gems/2.5.0/gems/chef-14.14.29/lib/chef/application/client.rb:449:in érun_application'
/opt/chef/embedded/lib/ruby/gems/2.5.0/gems/chef-14.14.29/lib/chef/application.rb:66:in érun'
/opt/chef/embedded/lib/ruby/gems/2.5.0/gems/chef-14.14.29/bin/chef-client:25:in é<top (required)>'
/opt/chef/bin/chef-client:81:in éload'
/opt/chef/bin/chef-client:81:in é<main>'
Ä2020-05-04T14:07:32+00:00Å FATAL: Errno::ENOENT: nodejs_npmÄpm2Å (nfl-nodeapps::default line 45) had an error: Errno::ENOENT: executeÄinstall NPM package pm2Å (/tmp/kitchen/cache/cookbooks/nodejs/providers/npm.rb line 6) had an error: Errno::ENOENT: No such file or directory - npm
>>>>>> ------Exception-------
>>>>>> Class: Kitchen::ActionFailed
>>>>>> Message: 1 actions failed.
>>>>>> Converge failed on instance <pm2-centos-77>. Please see .kitchen/logs/pm2-centos-77.log for more details
>>>>>> ----------------------
>>>>>> Please see .kitchen/logs/kitchen.log for more details
>>>>>> Also try running ékitchen diagnose --allé for configuration
-node.default['nodejs']['install_method'] = 'binary'
-include_recipe "nodejs::npm"
+node.default['nodejs']['install_method'] = 'package'
+include_recipe "nodejs"
+
Changing the installation method to package helped me overcome the above error.
When testing this issue my self it appears it is only affecting binary installs on kitchen vagrant centos 6,7, and 8. I ran a recipe against one of my centos 7 nodes and it runs just fine and installed the npm package. Ran it in dokken and again fine. 🤔 I will try to dive in more this weekend (might be next weekend just finishing a move).
This issue has popped up for me as well and why I am diving into it.
I took a look threw some PRs and when I tested it locally PR #117 fixed this issue.
Fwiw ... similar issue when using "package" on macOS (ex: via brew
). Crux of it is that the helper calls npm
hoping that it's in the environment path. The hiccup happens because /usr/local/bin
is not in non-interactive shell.
Edited to add ... good mitigation is to add the following to enclosed recipe:
ruby_block "Add '#{local_bin_path}' to chef-client ENV['PATH']" do
block { ENV['PATH'] = local_bin_path + ':' + ENV['PATH'] }
only_if { ENV['PATH'].scan(local_bin_path).empty? }
end
Where local_bin_path
is variable or attribute.
Thank you for the comments.