Sudo
から実行する場合、アプリケーションが異なるバージョンのNodeJSを使用することを述べました。
$ node -v
v0.10.23
$ Sudo node -v
v0.11.8-pre
このv0.11.8-preが原因で問題が発生したため、絶対に使用したくありませんが、rootに変更することはできません。
$ Sudo nvm use v0.10.23
Sudo: nvm: command not found
ルートユーザーからnvmをインストールしようとしましたが、「NVM already installed」というエラーが表示されましたが、Sudo
から実行するとnvmが見つかりません。私の問題は何ですか?
以下のコマンドのリスト(ソース: digitalocean )は問題を修正するようです
n=$(which node); \
n=${n%/bin/node}; \
chmod -R 755 $n/bin/*; \
Sudo cp -r $n/{bin,lib,share} /usr/local
上記のコマンドは少し複雑ですが、nvmを介してアクティブなノードのバージョンを/usr/local/
ディレクトリ(ユーザーがインストールしたグローバルファイルはLinux VPSに存在する必要があります)にコピーし、許可を設定するだけですすべてのユーザーがそれらにアクセスできます。
お役に立てれば!
私の解決策は、/usr/local/bin
に使用しているnode
およびnpm
のバージョンからシンボリックリンクを作成することです。
Sudo ln -s "$NVM_DIR/versions/node/$(nvm version)/bin/node" "/usr/local/bin/node"
Sudo ln -s "$NVM_DIR/versions/node/$(nvm version)/bin/npm" "/usr/local/bin/npm"
これにより、npm
およびnode
がすべてのユーザーに利用可能になります。
あなたの問題は、nvm
を使用するときにSudo
がパスにないことです。
タイプ
$ which nvm
結果は次のようになります
/home/abc/mynvm/nvm
Sudo
で今すぐ再試行してください:
Sudo /home/abc/mynvm/nvm use v0.10.23
その後、rootユーザーが0.10.13バージョンを見つけることができないが、次のエラーメッセージが表示されるという問題に遭遇したと思います...
基本的な理由は、nvm
が実際のプログラムではないためです。これは、ユーザーの.profile
、.bashrc
、または...にロードされるbash関数です。そのため、Sudo
は、他のほとんどのプログラムのように$ PATHから自動的に選択しません。
代替ノードバージョンマネージャーはn
: https://github.com/tj/n です。これは実際のプログラムなので、Sudo
はハッキングなしで$ PATHを介して取得します(Sudo
が$ PATHに/usr/local/bin
を持っている限り)。
Sudo npm install -g n # install 'n' globally
which n # should be /usr/local/bin/n
Sudo n lts # need Sudo to switch node versions
node --version # v6.10.0
Sudo node --version # v6.10.0
あなたにも問題がありました。最後に、私はそれを回避しました。私の解決策は次のとおりです。
apt-get purge nodejs
コマンドでアンインストールできます。ターミナルを再起動した後、コマンドSudo nvm ls
を実行できます。
Nvmを使用する場合、
npm -g
を使用してモジュールをグローバルにインストールするためにSudo
は必要ないため、Sudo npm install -g grunt
を実行する代わりにnpm install -g grunt
を実行してください
私の場合、Sudo npm run start
が必要です。これは、rootアクセスを必要とするファイルへのアクセスを必要とします。 この問題 によると、
Sudo
は使用しません。代わりに、nvmを持つユーザーがファイルにアクセスできるように、ファイルをchmod/chownする必要があります。
NvmのメンテナーはSudo
:Pをする必要はないと強く信じています
$ Sudo bash -ic "nvm use stable; npm -v"
Now using node v6.3.1 (npm v3.10.3)
3.10.3
私も同じマシンでnvm
を試してみましたが、わずかに異なる応答があります:
$ Sudo node --version
Sudo: node: command not found
私の推測では、nvmの外部にノード0.11をインストールしたと思われます。 (パッケージマネージャーまたはソースから)
したがって、Sudoを介して実行中のノードは、代わりにこのスタンドアロンノードを選択します。
それは理にかなっていますか、私は間違っていますか?
これに対する最も簡単な解決策は、nvm.sh実行可能ファイルをどこにでもヒットさせることです。
Sudo /home/ubuntu/.nvm/nvm.sh install node
これは私にとってはうまくいきます(インストールパスだと仮定します)。
完全なインストール手順は次のようになります
curl -o- https://raw.githubusercontent.com/creationix/nvm/v0.33.0/install.sh | bash
export NVM_DIR="/home/ubuntu/.nvm"
[ -s "$NVM_DIR/nvm.sh" ] && \. "$NVM_DIR/nvm.sh"
そして、上記のコマンドを実行して、新しくインストールされたnvm.shをヒットできます
Nvmをグローバルにインストールしますwget -qO- https://raw.githubusercontent.com/creationix/nvm/v0.32.1/install.sh | Sudo bash