'npm error installing truffle for ethereum development

When I try to install truffle using npm, the following output appears:

npm WARN deprecated [email protected]: This package is broken and no longer maintained. 'mkdirp' itself supports promises now, please switch to that.

npm WARN deprecated [email protected]: request has been deprecated, see https://github.com/request/request/issues/3142

npm WARN deprecated [email protected]: this library is no longer supported

npm WARN deprecated [email protected]: stable api reached

npm WARN deprecated [email protected]: Please see https://github.com/lydell/urix#deprecated

npm WARN deprecated [email protected]: https://github.com/lydell/resolve-url#deprecated

npm WARN deprecated [email protected]: Legacy versions of mkdirp are no longer supported. Please update to mkdirp 1.x. (Note that the API surface has changed to use Promises in 1.x.)

npm WARN deprecated [email protected]: Please upgrade to @mapbox/node-pre-gyp: the non-scoped node-pre-gyp package is deprecated and only the @mapbox scoped package will recieve updates in the future

npm WARN deprecated [email protected]: Package moved to @redux-devtools/app.

npm WARN deprecated [email protected]: Package moved to @redux-devtools/instrument.

npm WARN deprecated [email protected]: Package moved to @redux-devtools/serialize.

npm WARN deprecated [email protected]: 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.

npm WARN deprecated [email protected]: Critical security vulnerability fixed in v0.21.1. For more information, see https://github.com/axios/axios/pull/3410

npm WARN deprecated [email protected]: CircularJSON is in maintenance only, flatted is its successor.

npm WARN deprecated [email protected]: Debug versions >=3.2.0 <3.2.7 || >=4 <4.3.1 have a low-severity ReDos regression when used in a Node.js environment. It is recommended you upgrade to 3.2.7 or 4.3.1. (https://github.com/visionmedia/debug/issues/797)

npm WARN deprecated [email protected]: "Please update to latest v2.3 or v2.2"

npm WARN checkPermissions Missing write access to /usr/lib/node_modules

npm WARN optional SKIPPING OPTIONAL DEPENDENCY: fsevents@~2.1.2 
(node_modules/truffle/node_modules/chokidar/node_modules/fsevents):

npm WARN notsup SKIPPING OPTIONAL DEPENDENCY: Unsupported platform for [email protected]: wanted {"os":"darwin","arch":"any"} (current: {"os":"linux","arch":"x64"})

npm ERR! code EACCES

npm ERR! syscall access

npm ERR! path /usr/lib/node_modules

npm ERR! errno -13

npm ERR! Error: EACCES: permission denied, access '/usr/lib/node_modules'

npm ERR!  [Error: EACCES: permission denied, access '/usr/lib/node_modules'] {

npm ERR!   errno: -13,

npm ERR!   code: 'EACCES',

npm ERR!   syscall: 'access',

npm ERR!   path: '/usr/lib/node_modules'

npm ERR! }

npm ERR! 

npm ERR! The operation was rejected by your operating system.

npm ERR! It is likely you do not have the permissions to access this file as the current user

npm ERR! 

npm ERR! If you believe this might be a permissions issue, please double-check the

npm ERR! permissions of the file and its containing directories, or try running

npm ERR! the command again as root/Administrator.


npm ERR! A complete log of this run can be found in:

npm ERR!     /home/jerry/.npm/_logs/2021-04-23T13_13_53_567Z-debug.log

I think it's because I do not have access as root admin. I tried restarting my PC but it still doesn't work. There's also an error where it says something about my OS. I have no ideas as I am new to Ethereum development.



Solution 1:[1]

I had this problem as well, and it seems the problem is how truffle packages are managed or deployed on npm, I instead used:

yarn global add truffle

And it worked. Please try it. From my experience, npm install -g truffle does not work on a Linux Ubuntu 20.04 setup(which was my environment), but it worked when I ran it on a WSL Ubuntu 20.04 Terminal. This is something maybe the truffle team may keep in mind. I also realized there are warnings around using sudo npm install -g truffle, so don't use it.

Solution 2:[2]

Yes, you need admin permissions to install NPM packages globally, prepend the command with sudo:

sudo npm install -g truffle

Sources

This article follows the attribution requirements of Stack Overflow and is licensed under CC BY-SA 3.0.

Source: Stack Overflow

Solution Source
Solution 1 Celestino
Solution 2 plink