DEV Community

Michal Bryxí
Michal Bryxí

Posted on

sh: 1: node: Permission denied on `volta install`

Earlier this week I started seeing failures on my Docker builds with a rather cryptic message: sh: 1: node: Permission denied. This was really strange, because I did not change anything significant enough to cause this error. Example of failing logs:

For netlify-cli:

Step 17/18 : RUN volta install netlify-cli --verbose
 ---> Running in 53c120c8aebb
[verbose] Acquiring lock on Volta directory: /root/.volta/volta.lock
[verbose] Found default configuration at '/root/.volta/tools/user/platform.json'
[verbose] node@12.19.0 has already been fetched, skipping download
[verbose] yarn@1.22.10 has already been fetched, skipping download
[verbose] Installing netlify-cli with command: "npm" "install" "--global" "--loglevel=warn" "--no-update-notifier" "--no-audit" "netlify-cli"
[verbose] [install stderr]
npm WARN deprecated urix@0.1.0: Please see https://github.com/lydell/urix#deprecated
npm WARN deprecated resolve-url@0.2.1: https://github.com/lydell/resolve-url#deprecated
npm WARN deprecated object-keys@0.2.0: Please update to the latest object-keys
sh: 1: node: Permission denied
npm WARN optional SKIPPING OPTIONAL DEPENDENCY: fsevents@~2.1.2 (node_modules/netlify-cli/node_modules/rollup/node_modules/fsevents):
npm WARN notsup SKIPPING OPTIONAL DEPENDENCY: Unsupported platform for fsevents@2.1.3: wanted {"os":"darwin","arch":"any"} (current: {"os":"linux","arch":"x64"})
npm WARN @octokit/plugin-request-log@1.0.1 requires a peer of @octokit/core@>=3 but none is installed. You must install peer dependencies yourself.

npm ERR! code ELIFECYCLE
npm ERR! syscall spawn
npm ERR! file sh
npm ERR! errno ENOENT
npm ERR! netlify-cli@2.65.7 postinstall: `node ./scripts/postinstall.js`
npm ERR! spawn ENOENT
npm ERR!
npm ERR! Failed at the netlify-cli@2.65.7 postinstall script.
npm ERR! This is probably not a problem with npm. There is likely additional logging output above.
Enter fullscreen mode Exit fullscreen mode

For ember-cli:

Step 17/18 : RUN volta install ember-cli netlify-cli --verbose
 ---> Running in c09e5ec1b6cf
[verbose] Acquiring lock on Volta directory: /root/.volta/volta.lock
[verbose] Found default configuration at '/root/.volta/tools/user/platform.json'
[verbose] node@12.19.0 has already been fetched, skipping download
[verbose] yarn@1.22.10 has already been fetched, skipping download
[verbose] Installing ember-cli with command: "npm" "install" "--global" "--loglevel=warn" "--no-update-notifier" "--no-audit" "ember-cli"
[verbose] [install stderr]
npm WARN deprecated urix@0.1.0: Please see https://github.com/lydell/urix#deprecated
npm WARN deprecated resolve-url@0.2.1: https://github.com/lydell/resolve-url#deprecated
npm WARN deprecated core-js@2.6.11: core-js@<3 is no longer maintained and not recommended for usage due to the number of issues. Please, upgrade your dependencies to the actual version of core-js@3.
sh: 1: node: Permission denied
npm ERR! code ELIFECYCLE
npm ERR! syscall spawn
npm ERR! file sh
npm ERR! errno ENOENT
npm ERR! core-js@2.6.11 postinstall: `node -e "try{require('./postinstall')}catch(e){}"`
npm ERR! spawn ENOENT
npm ERR! 
npm ERR! Failed at the core-js@2.6.11 postinstall script.
Enter fullscreen mode Exit fullscreen mode

The error message looks slightly different in each case.

What I think is the problem: In my Docker container, I'm using Volta for node/yarn version management. And for the volta install command it internally uses npm install --global, which does not like to run when the script is executed as root.

So the solution was to add following line to my Dockerfile just before the volta install command:

RUN npm set unsafe-perm true
Enter fullscreen mode Exit fullscreen mode

Sentry image

See why 4M developers consider Sentry, “not bad.”

Fixing code doesn’t have to be the worst part of your day. Learn how Sentry can help.

Learn more

Top comments (0)

Sentry image

See why 4M developers consider Sentry, “not bad.”

Fixing code doesn’t have to be the worst part of your day. Learn how Sentry can help.

Learn more