sudo で node.js n パッケージを実行するとコマンドが見つかりません

sudo で node.js n パッケージを実行するとコマンドが見つかりません

ノードのバージョンを最新の安定版に更新しようとしています。

使用このリソース以下のことができました:

sudo npm install n -g

でも試してみると

sudo npm n stable

次のような結果になります:

sudo: n: command not found

を実行するとn stable、コマンドが表示されます:

n stable
mkdir: cannot create directory ‘/usr/local/n’: Permission denied
mkdir: cannot create directory ‘/usr/local/n’: Permission denied
mkdir: cannot create directory ‘/usr/local/n’: Permission denied
mkdir: cannot create directory ‘/usr/local/n’: Permission denied

     install : node-v0.12.2
       mkdir : /usr/local/n/versions/node/0.12.2
mkdir: cannot create directory ‘/usr/local/n’: Permission denied

  Error: sudo required

答え1

私にとって有効な解決策を見つけました:

sudo -E env "PATH=$PATH" n stable

ここで見つけました:https://stackoverflow.com/a/29400598/861615

答え2

驚いたことに、npmインストールでは、ホーム ディレクトリの というフォルダーにグローバル プレフィックスが付いていますnpm。つまり、フラグを使用してインストールされたすべてのパッケージが-gこのフォルダーにインストールされます。

sudo次の手順に従って、このフォルダーを安全なパス上にある任意のフォルダーに変更できます。


グラフィカルな方法:

  1. ファイル マネージャー (別名 Nautilus) を開きます。
  2. ホームフォルダに移動します。
  3. Ctrl隠しファイルを表示するには+ を押しますH
  4. .npmrcお気に入りのテキスト エディターでというファイルを開きます。
  5. そのファイルで次の内容の行を見つけます:

    prefix=/home/<your_username>/npm
    
  6. /home/<your_username>/npm安全なパス( など)に置き換えます/usr/local/bin
  7. 交換すると次のようになります。

    prefix=/usr/local/bin
    
  8. ファイルを保存します。
  9. 再実行sudo npm install n -g

ターミナルウェイ:

次のコマンドを実行します:

sed -i.bak "s%^prefix=.*$%prefix=/usr/local/bin%" ~/.npmrc

答え3

これは Ubuntu フォーラムであることは承知していますが、私と同じように Google で検索して RHEL フレーバーで同じ問題を抱えている人にとっては役立つはずです。おそらく Ubuntu でも機能するでしょう。

これがアプローチです:

ln -s /usr/local/bin/n /usr/bin/n

答え4

.npm-globalフォルダを混乱させないようにするために了解しました@Edson Horacio Juniorによる、@pohestの答え、これを修正した方法は次のとおりです。

sudo ln -s /home/<username>/.npm-global/bin/n /usr/local/bin/n
sudo n --version # test it

注意:npmの手順に従っていない場合、これはおそらく機能しません。デフォルトのグローバルディレクトリを変更する

関連情報