私は多くのことをテストするローカル開発サーバーを持っていますが、今はSymfony2プロジェクトでライブラリの依存関係を管理するためにbowerで遊んでいます。 NodeJS(v0.10.31)をインストールし、bower(1.3.9)を取得した後、Symfony2 SpBowerBundleに属するコマンドsp:bower:install
をコンソールから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から直接テストしたため機能することを知っていますが、バンドルコマンドラインからは許可されていないようです。今、root
としてbowerを実行して--allow-root
を追加する唯一の方法はありますか、それとも別の方法で存在しますか?
以下の答えはsymfonyフレームワークのバンドル用ですが、ここからgoogleから来た場合はフレーズ「bower root」には、それを解決する2つのオプションがあります。
オプション1:次のように入力して、rootとしてbowerを実行できます。
bower install --allow-root
ルートは--allow-rootコマンドパラメーターを設定することで許可されます
オプション2:は、ファイルを作成することにより、rootを許可するグローバル設定を使用しています:/ root/.bowerrc次の内部構成があります:
{ "allow_root": true }
SpBowerBundlesymfonyバンドルでこれを行う方法:
SpBowerBundle configでsp_bower.allow_rootをtrueに設定していない可能性があります
バンドル構成では、デフォルトで次のように設定されています:
allow_root: false # optional
ただし、次のものが必要です。
allow_root: true
したがって、app/config/config.ymlにこのバンドル構成を追加します
sp_bower:
allow_root: false # optional
バンドル構成リファレンス(すべての設定): https://github.com/Spea/SpBowerBundle/blob/master/Resources/doc/configuration_reference.md
I 修正済み ディレクトリ権限を変更することによる同様の問題:
Sudo chown -R $USER:$GROUP ~/.npm
Sudo chown -R $USER:$GROUP ~/.config
Dockerコンテナでこの問題が発生している場合は、Dockerfileに次の行を追加してください。
RUN echo '{ "allow_root": true }' > /root/.bowerrc
これはばかげているかもしれませんが、私にとってbower install --allow-root
は機能しませんでしたが、bower --allow-root install
は機能しました。grunt-bower-installバージョン1.6.0を使用して
これは、rootユーザーで実行されているdockerで行われたため、おそらく誰かの時間を節約できます:)
Swagger-editorのインストール時に同様の問題に直面しました。 package.jsonの次の行を
"bower-install": "bower install"
に
"bower-install": "bower install --allow-root"
これは私のために働く(docker runに-uパラメータを追加)
bash docker run -it -v ${PWD}:/www -w /www -u node node ./node_modules/bower/bin/bower install
私の場合、以下のように引数として追加したのはPom.xmlです。
<executable>bower</executable>
<arguments>
<argument>install</argument>
<argument>--allow-root</argument>
</arguments>
この--allow--rootパラメーターを回避する必要がある場合は、rootユーザーからコンパイルできます