以 root 用户身份运行 bower,是否可行?如何操作?

58

我有一个本地开发服务器,用于测试很多东西,现在我正在尝试使用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

我知道添加--allow-root可以正常工作,因为我直接从bash测试过,但似乎在bundle命令行中不允许。那么,作为root运行bower的唯一方法是添加--allow-root吗?还是存在其他方法?


2
echo '{ "allow_root": true }' > /root/.bowerrc - Jinna Balu
8个回答

149

以下答案适用于Symfony框架的Bundle,但如果你是通过谷歌搜索使用"bower root"这个词组来到这里的,你有两个解决选项:

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

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

bower install --allow-root

通过设置--allow-root命令参数,允许使用root用户。

选项2:是使用全局设置来允许root用户,方法是创建文件:/root/.bowerrc,并在其中添加以下配置:

{ "allow_root": true }
如何在Symfony的SpBowerBundle中实现此操作:
可能你没有在SpBowerBundle配置中将sp_bower.allow_root设置为true。

默认情况下,在捆绑配置中,您已经设置了类似这样的东西:


allow_root: false # optional

但是你应该有:

allow_root: true

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

sp_bower:
    allow_root: false # optional

捆绑包配置参考(所有设置):https://github.com/Spea/SpBowerBundle/blob/master/Resources/doc/configuration_reference.md


你应该把 allow_root: true 放在哪里? - Tyvain
1
您IP地址为143.198.54.68,由于运营成本限制,当前对于免费用户的使用频率限制为每个IP每72小时10次对话,如需解除限制,请点击左下角设置图标按钮(手机用户先点击左上角菜单按钮)。 - blablabla
1
allow_root 值必须在您的 app/config/config.yml 中设置。只需按照答案中的链接即可。 - althaus
1
选项2对我有用。谢谢。 - Behnam

18

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

RUN echo '{ "allow_root": true }' > /root/.bowerrc

我需要在Docker文件的哪里添加? - Jinna Balu

17

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

sudo chown -R $USER:$GROUP ~/.npm
sudo chown -R $USER:$GROUP ~/.config

5
这可能很愚蠢,但对我来说bower install --allow-root无法工作,而bower --allow-root install可以,使用grunt-bower-install 1.6.0版本。
这是在以root用户运行的docker上进行的,也许可以为某些人节省时间 :)

3

在安装Swagger-Editor时遇到了类似的问题。 在package.json中将以下行更改为:

"bower-install": "bower install"

to

"bower-install": "bower install --allow-root"

3
这对我有用(在docker运行时添加-u参数)
bash docker run -it -v ${PWD}:/www -w /www -u node node ./node_modules/bower/bin/bower install

2

对于我的情况,它在Pom.xml中,我已经添加了以下参数:

<executable>bower</executable>
 <arguments>
 <argument>install</argument>
  <argument>--allow-root</argument>
 </arguments>

如果需要避免使用--allow--root参数,我们可以在非root用户下进行编译。


0

删除 bower_components 并重新安装 bower

bower install

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接