从root用户运行bower,这可能吗?怎么样?

Rey*_*rPM 53 node.js symfony bower

我有一个本地开发服务器,我测试了很多东西,现在我正在玩bower来管理我的Symfony2项目中的库的依赖项.在安装了NodeJS(v0.10.31)和bower(1.3.9)后,我尝试sp:bower:install从控制台运行属于Symfony2 SpBowerBundle 的命令root:

Symfony > sp:bower:install
Installing bower dependencies for "TemplateBundle" into "/var/www/html/tanane/src/Tanane/TemplateBundle/Resources/config/bower/../../public/components"

bower ESUDO         Cannot be run with sudo

Additional error details:
Since bower is a user command, there is no need to execute it with superuser permissions.
If you're having permission errors when using bower without sudo, please spend a few minutes learning more about how your system should work and make any necessary repairs.

http://www.joyent.com/blog/installing-node-and-npm
https://gist.github.com/isaacs/579814

You can however run a command with sudo using --allow-root option
Run Code Online (Sandbox Code Playgroud)

我知道添加--allow-root工作,因为我直接从bash测试,但显然不允许从bundle命令行.现在,运行bower的唯一方法是root添加--allow-root还是以另一种方式存在?

LPo*_*ski 140

下面的答案是针对symfony框架的捆绑, 但如果你使用短语" bower root " 从google来到这里,你有两个选择来解决这个问题:

  1. 添加--allow-root命令
  2. 设置全局bower配置,允许以root身份运行bower

选项1:您可以键入以下命令以root身份运行bower:

bower install --allow-root
Run Code Online (Sandbox Code Playgroud)

设置--allow-root命令参数允许root

选项2:使用允许root的全局设置,通过创建文件: /root/.bowerrc ,其中包含以下内容:

{ "allow_root": true }
Run Code Online (Sandbox Code Playgroud)

如何在SpBowerBundle symfony包中执行此操作:
可能您没有在SpBowerBundle配置中将sp_bower.allow_root设置为true

在bundle config中,默认情况下你设置了这样的东西:

allow_root: false # optional
Run Code Online (Sandbox Code Playgroud)

但你应该:

allow_root: true
Run Code Online (Sandbox Code Playgroud)

所以在app/config/config.yml中添加这个bundle配置

sp_bower:
    allow_root: false # optional
Run Code Online (Sandbox Code Playgroud)

bundle config reference(所有设置):https: //github.com/Spea/SpBowerBundle/blob/master/Resources/doc/configuration_reference.md


sam*_*ize 16

我通过更改目录权限修复了类似的问题:

sudo chown -R $USER:$GROUP ~/.npm
sudo chown -R $USER:$GROUP ~/.config
Run Code Online (Sandbox Code Playgroud)


Adr*_*Onu 14

如果您在Docker容器上遇到此问题,只需在Dockerfile中添加以下行:

RUN echo '{ "allow_root": true }' > /root/.bowerrc
Run Code Online (Sandbox Code Playgroud)


kei*_*sar 5

这可能很愚蠢,但对我来说bower install --allow-root没有用,但是bower --allow-root install确实有效,使用 grunt-bower-install 版本 1.6.0

这是在以 root 用户运行的 docker 上进行的,也许会节省一些时间:)