Ionic 2 - 错误:EACCES:在 Ubuntu 12.04LTS 上安装时权限被拒绝

Posted

技术标签:

【中文标题】Ionic 2 - 错误:EACCES:在 Ubuntu 12.04LTS 上安装时权限被拒绝【英文标题】:Ionic 2 - Error: EACCES: permission denied in installation on Ubuntu 12.04LTS 【发布时间】:2017-03-13 11:00:50 【问题描述】:

按照http://ionicframework.com/docs/v2/getting-started/installation/ 中的说明在 ubuntu 12.04 LTS 上安装 ionic 时出现以下错误

使用的命令

安装 nodejs 6.x

cookbook$ curl -sL https://deb.nodesource.com/setup_6.x | sudo -E bash -
cookbook$ sudo apt-get install -y nodejs
cookbook$ node -v
v6.9.1
[~]
cookbook$ npm -v
3.10.8
[~]

按照说明安装离子

cookbook$ npm install -g ionic cordova



+-- readable-stream@1.0.34 
| +-- core-util-is@1.0.2 
| +-- inherits@2.0.3 
| +-- isarray@0.0.1 
| `-- string_decoder@0.10.31 
`-- setimmediate@1.0.5 

npm ERR! Linux 3.8.0-29-generic
npm ERR! argv "/usr/bin/nodejs" "/usr/bin/npm" "install" "-g" "ionic" "cordova"
npm ERR! node v6.9.1
npm ERR! npm  v3.10.8
npm ERR! path /usr/lib/node_modules
npm ERR! code EACCES
npm ERR! errno -13
npm ERR! syscall access

npm ERR! Error: EACCES: permission denied, access '/usr/lib/node_modules'
npm ERR!     at Error (native)
npm ERR!   Error: EACCES: permission denied, access '/usr/lib/node_modules'
npm ERR!     at Error (native)
npm ERR!   errno: -13,
npm ERR!   code: 'EACCES',
npm ERR!   syscall: 'access',
npm ERR!   path: '/usr/lib/node_modules' 
npm ERR! 
npm ERR! Please try running this command again as root/Administrator.

npm ERR! Please include the following file with any support request:
npm ERR!     /home/cookbook/npm-debug.log
[~]

错误消息建议尝试以 root/管理员身份再次运行此命令。

解决这个问题的正确方法是什么?

Windows 10 上的类似问题here

【问题讨论】:

【参考方案1】:

试试sudo:

sudo npm install -g ionic cordova

【讨论】:

这是推荐的方法吗?它有任何副作用吗?离子文档似乎没有这样说。 @Antonis - 你能添加参考/原因运行这个sudo Ionic does not recommend using sudo 因为“它会导致进一步的并发症。”【参考方案2】:

不要使用sudo,长期下去会带来更多问题。以下指南完美地解释了它:(它适用于 OSX,但应用相同)

https://johnpapa.net/how-to-use-npm-global-without-sudo-on-osx/

【讨论】:

+1 供参考。从上面的文章来看,这似乎需要 npm 人员长期解决。【参考方案3】:

尝试了来自不同参考的不同建议。

建议 1 来自 here - 没有用

这仍然给出了同样的错误EACCES: permission denied

来自here 的

建议 2 - 有效

cookbook$  npm config get prefix
/usr
[~]
cookbook$ 

所以这是个问题,npm 的建议是将 npm 的默认目录更改为另一个目录

步骤如下

    为全局安装创建一个目录:

    mkdir ~/.npm-global

    配置 npm 以使用新的目录路径:

    npm config set prefix '~/.npm-global'

    打开或创建一个 ~/.profile 文件并添加以下行:

    export PATH=~/.npm-global/bin:$PATH

    回到命令行,更新你的系统变量:

    source ~/.profile

在使用cookbook$ npm install -g ionic cordova 完成此离子安装后,没有任何错误。

cookbook$ ionic -v
--------------------------------
cordova -v******************************************************
 Dependency warning - for the CLI to run correctly,      
 it is highly recommended to install/upgrade the following:     

 Please install your Cordova CLI to version  >=4.2.0 `npm install -g cordova`

******************************************************
2.1.4

[~]
cookbook$ cordova -v
? May Cordova anonymously report usage statistics to improve the tool over time? Yes

Thanks for opting into telemetry to help us improve cordova.
6.4.0
[~]
cookbook$ 

【讨论】:

建议 2 中的替代方法也可以正常工作。在 GNU/Linux 中,只需在 ~/.bashrc 文件中添加 NPM_CONFIG_PREFIX=~/.npm-global 并忽略步骤 2 以在建议 2 中结束。

以上是关于Ionic 2 - 错误:EACCES:在 Ubuntu 12.04LTS 上安装时权限被拒绝的主要内容,如果未能解决你的问题,请参考以下文章

ionic platform add ios, Error:spawn EACCES

ionic 打包遇到"Error: spawn EACCES".

NPM 不会在 Mac 上安装任何包。新的,干净的构建。 `EACCES` 和其他错误

错误:听 EACCES:权限被拒绝 0.0.0.0:443

错误:EACCES:权限被拒绝

bower install 给我 EACCES 失败:权限被拒绝错误