J'ai un serveur de développement local où je teste beaucoup de choses, maintenant je joue avec bower pour gérer les dépendances des bibliothèques dans mon projet Symfony2. Après avoir installé NodeJS (v0.10.31) et bower (1.3.9), j’ai essayé d’exécuter la commande sp:bower:install
qui appartient à Symfony2 SpBowerBundle à partir de la console en tant que 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
Je sais que l'ajout de --allow-root
fonctionne depuis que j'ai testé directement à partir de bash, mais apparemment cela n'est pas autorisé à partir de la ligne de commande bundle. Maintenant, c’est le seul moyen d’exécuter bower en tant que root
pour ajouter --allow-root
ou existe-t-il d'une autre manière?
la réponse ci-dessous correspond au paquetage de symfony framework , mais si vous venez ici de google , utilisez la phrase " bower root "vous avez deux options pour résoudre ce problème:
Option 1: vous pouvez exécuter bower en tant que root en tapant:
bower install --allow-root
root est autorisé en définissant --allow-root command paramètre
Option 2: utilise un paramètre global autorisant root, en créant un fichier: /root/.bowerrc qui ont à l'intérieur la configuration suivante:
{ "allow_root": true }
comment faire cela dans SpBowerBundle symfony bundle:
Vous n'avez probablement pas défini sp_bower.allow_root à true dans la configuration de SpBowerBundle
dans la configuration de paquet, vous avez par défaut défini quelque chose comme ceci:
allow_root: false # optional
mais vous devriez avoir:
allow_root: true
donc, dans app/config/config.yml ajouter cette config bundle
sp_bower:
allow_root: false # optional
référence de configuration de bundle (tous les paramètres): https://github.com/Spea/SpBowerBundle/blob/master/Resources/doc/configuration_reference.md
Je corrigé un problème similaire en modifiant les permissions du répertoire:
Sudo chown -R $USER:$GROUP ~/.npm
Sudo chown -R $USER:$GROUP ~/.config
Si vous rencontrez ce problème sur les conteneurs Docker, ajoutez simplement cette ligne dans votre fichier Docker:
RUN echo '{ "allow_root": true }' > /root/.bowerrc
Cela peut être stupide mais pour moi bower install --allow-root
n'a pas fonctionné mais bower --allow-root install
_ l'a fait avec la version 1.6.0 de grunt-bower-install
C'était sur un menu fixe fonctionnant avec l'utilisateur root, cela permettra peut-être à quelqu'un de gagner du temps :)
Problème similaire lors de l’installation de swagger-editor. Modification de la ligne suivante dans package.json à partir de
"bower-install": "bower install"
à
"bower-install": "bower install --allow-root"
Cela fonctionne pour moi (paramètre add -u sur l'exécution de docker)
bash docker run -it -v ${PWD}:/www -w /www -u node node ./node_modules/bower/bin/bower install
Pour mon cas, c’est dans Pom.xml où j’ai ajouté comme argument comme ci-dessous:
<executable>bower</executable>
<arguments>
<argument>install</argument>
<argument>--allow-root</argument>
</arguments>
Si besoin d'éviter ce paramètre --allow - root, nous pouvons faire une compilation à partir de l'utilisateur root