npm - EPERM:Linux 上不允许操作

Posted

技术标签:

【中文标题】npm - EPERM:Linux 上不允许操作【英文标题】:npm - EPERM: operation not permitted on Linux 【发布时间】:2017-11-03 23:56:05 【问题描述】:

我正在尝试在我的本地机器 (centOS) 上做 react 教程

我跑了

sudo npm install -g create-react-app

运行该命令后出现以下错误

npm ERR! Linux 3.10.0-514.el7.x86_64
npm ERR! argv "/usr/bin/node" "/usr/bin/npm" "install" "-g" "create-react-app"
npm ERR! node v6.10.3
npm ERR! npm  v3.10.10
npm ERR! path /tmp/npm-1422-84cdbe70/registry.npmjs.org/tar/-/tar-2.2.1.tgz
npm ERR! code EPERM
npm ERR! errno -1
npm ERR! syscall open
npm ERR! Error: EPERM: operation not permitted, open '/tmp/npm-   1422-84cdbe70/registry.npmjs.org/tar/-/tar-2.2.1.tgz' while getting shasum for /tmp/npm-1422-84cdbe70/registry.npmjs.org/tar/-/tar-2.2.1.tgz
npm ERR! From:     https://registry.npmjs.org/tar/-/tar-2.2.1.tgz
npm ERR!     at Error (native)
npm ERR!   Error: EPERM: operation not permitted, open '/tmp/npm-1422-84cdbe70/registry.npmjs.org/tar/-/tar-2.2.1.tgz' while getting shasum for /tmp/npm-1422-84cdbe70/registry.npmjs.org/tar/-/tar-2.2.1.tgz
npm ERR! From:     https://registry.npmjs.org/tar/-/tar-2.2.1.tgz
npm ERR!     at Error (native)
npm ERR!   errno: -1,
npm ERR!   code: 'EPERM',
npm ERR!   syscall: 'open',
npm ERR!   path: '/tmp/npm-1422-84cdbe70/registry.npmjs.org/tar/-/tar-2.2.1.tgz',
npm ERR!   parent: 'tar-pack' 
npm ERR! 
npm ERR! Please try running this command again as root/Administrator.

我尝试进入目录并解压缩 .tgz 文件并更改一些权限,但没有任何效果。我在网上遵循了一些类似问题的解决方案,但仍然没有运气。

我也跑了

npm cache clear

谁能解释为什么会这样?有什么建议吗?

【问题讨论】:

你试过这些吗? docs.npmjs.com/getting-started/fixing-npm-permissions @TimeDead 是的,但它处理 EACCES 错误,这是一个 EPERM 错误。 嗯,您是否尝试过chmod 或检查您的/tmp 文件夹的权限? 是的,我有。使用ls -l 返回drwxrwxrwt. 24 root root 4096 Jun 6 07:42 tmp 【参考方案1】:

运行npm cache clear 甚至npm cache clear -f 并不总是清除所有缓存。

有时您应该手动删除缓存文件。 为此,请转到默认 NPM 缓存文件夹并删除其内容:

默认~/.npm(Linux)或%AppData%/npm-cache(Windows)。

然后您可以尝试使用npm install -g 安装所需的软件包。

避免使用 sudo npm install -g,因为你会弄乱 npm 权限。而是将权限更改为 npm 的默认目录,或者将 npm 的默认目录更改为另一个目录。更多细节在这里: https://docs.npmjs.com/getting-started/fixing-npm-permissions

警告:如果 npm 的默认路径只是 /usr,更改目录权限将是有害的。

【讨论】:

以上是关于npm - EPERM:Linux 上不允许操作的主要内容,如果未能解决你的问题,请参考以下文章

npm publish 导致'错误:EPERM:不允许操作,取消链接...',errno -4048

npm 错误!错误:EPERM:不允许操作,重命名

Npm 安装错误 EPERM 操作不允许

npm install -g expo-cli 失败并显示“EPERM:不允许操作,取消链接 '...\adb.exe'

EPERM,不允许操作错误,配置存储

npm install 给出错误:EPERM,取消链接