Closed mzayn closed 2 years ago
The salient part of this error is:
npm ERR! sharp: Installation error: EACCES: permission denied, mkdir '/root/.npm'
It looks like you're using the root user with npm v7 so please take another look at the question:
npm install
own the directory it is run in?Please can you confirm that the root user owns the /www/wwwroot/beta-version
directory.
What is the output of running stat /www/wwwroot/beta-version
?
The salient part of this error is:
npm ERR! sharp: Installation error: EACCES: permission denied, mkdir '/root/.npm'
It looks like you're using the root user with npm v7 so please take another look at the question:
- If you are using npm v7, does the user running
npm install
own the directory it is run in?Please can you confirm that the root user owns the
/www/wwwroot/beta-version
directory. What is the output of runningstat /www/wwwroot/beta-version
?
when running ``npm install``` the output like below
npm install
npm WARN deprecated querystring@0.2.0: The querystring API is considered Legacy. new code should use the URLSearchParams API instead.
npm WARN deprecated popper.js@1.16.1: You can find the new Popper v2 at @popperjs/core, this package is dedicated to the legacy v1
npm WARN deprecated core-js@2.6.12: core-js@<3.3 is no longer maintained and not recommended for usage due to the number of issues. Because of the V8 engine whims, feature detection in old core-js versions could cause a slowdown up to 100x even if nothing is polyfilled. Please, upgrade your dependencies to the actual version of core-js.
npm ERR! code 1
npm ERR! path /www/wwwroot/beta-version/node_modules/sharp
npm ERR! command failed
npm ERR! command sh -c (node install/libvips && node install/dll-copy && prebuild-install) || (node install/can-compile && node-gyp rebuild && node install/dll-copy)
npm ERR! sharp: Are you trying to install as a root or sudo user? Try again with the --unsafe-perm flag
npm ERR! sharp: Please see https://sharp.pixelplumbing.com/install for required dependencies
npm ERR! sharp: Installation error: EACCES: permission denied, mkdir '/root/.npm'
npm ERR! A complete log of this run can be found in:
npm ERR! /root/.npm/_logs/2021-09-22T10_30_22_920Z-debug.log
for output stat here
stat /www/wwwroot/beta-version
File: /www/wwwroot/beta-version
Size: 4096 Blocks: 8 IO Block: 4096 directory
Device: 802h/2050d Inode: 22811925 Links: 8
Access: (0755/drwxr-xr-x) Uid: ( 1000/ www) Gid: ( 1000/ www)
Access: 2021-07-23 18:45:32.077405641 +0800
Modify: 2021-09-22 16:25:12.131787357 +0800
Change: 2021-09-22 16:25:12.131787357 +0800
Birth: -
You are running npm
as root
but the directory you are running it in, namely /www/wwwroot/beta-version
, is currently owned by www
. Please change this directory to be owned by root
or run npm
as www
.
This is a feature of npm v7 and is unrelated to sharp.
https://blog.npmjs.org/post/626173315965468672/npm-v7-series-beta-release-and-semver-major.html
"When npm is run as root, scripts are always run with the effective uid and gid of the working directory owner."
I hope this information helped. Please feel free to re-open with more details if further assistance is required.
@lovell this information is especially useful for building in docker containers where the /www
or /app
directory is owned by the node user but the install is run by root user.
Maybe it's worthwhile mentioning in the https://sharp.pixelplumbing.com/install
docs as that's the URL provided when the install fails for this reason.
I feel like this issue will start popping up more once node16 hits LTS as I believe that is the first LTS version that ships with npm7.
@charsleysa Please see https://sharp.pixelplumbing.com/install#common-problems
When using npm v7, the user running
npm install
must own the directory it is run in.
Please also note the installation issue template, which asks the question "If you are using npm v7, does the user running npm install
own the directory it is run in?". This question was answered in this issue with "YES", but it transpired that this was not the case.
@lovell sorry, I totally missed that part. Will need to read the docs much more carefully next time!
Did you see the documentation relating to installation?
YES
Have you ensured the architecture and platform of Node.js used for
npm install
is the same as the architecture and platform of Node.js used at runtime?YES
Are you using the latest version? Is the version currently in use as reported by
npm ls sharp
the same as the latest version as reported bynpm view sharp dist-tags.latest
?If you are using npm v6 or earlier and installing as a
root
orsudo
user, have you tried with thenpm install --unsafe-perm
flag?If you are using npm v7, does the user running
npm install
own the directory it is run in?YES
If you are using the
ignore-scripts
feature ofnpm
, have you tried with thenpm install --ignore-scripts=false
flag?What is the complete output of running
npm install --verbose sharp
? Have you checked this output for useful error messages?What is the output of running
npx envinfo --binaries --system
?OS use =
Centos 8