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


13

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

このリソースを使用して、次のことができました。

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

ニースのアイデアが、私はそれを返すことを行うときに私の「n:コマンドが見つかりません」私は「sudoを」落としたにも関わらず、
JonRed

sudo sh -c "PATH = $ PATH; n安定" <改行> sh:1:n:見つかりません
-JonRed

出力がまったくありません。それは憂鬱です:-(
JonRed


出力を投稿してくださいls /usr/local/bin/n
Helio

回答:


5

驚いたことに、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

これで釘付けになったと思う!また、npmバージョンを更新したときにも役立ちましたが、認識できませんでした。それで、受け入れられて、ありがとう!
JonRed

役に立たなかった、まだ同じ問題:/
ラッキールック

これは私を助けました!私はこれを追加しましたので、私は、〜/ .npmrcファイルを持っていなかったと今では罰金に動作します
キリルGusyatin

2
注意:これにより、NPMアクセス許可修正するオプション2が取り消されます
エドソンホラシオジュニア


2

これがUbuntuフォーラムであることは知っていますが、これは、私がやったようにGoogleでGoogleにアクセスしたRHELフレーバーで同じ問題を抱えている人の助けになると確信しています。おそらくUbuntuでも動作するでしょう。

これがアプローチです:

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

0

めちゃくちゃ避けるため.npm-globalとしてフォルダ指摘 @Edsonオラシオジュニアによって、およびのpohest @に基づいて答え、ここで私はそれを修正する方法です。

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

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


0

私に合った解決策を見つけました。nvmパッケージを使用して最新のノードをダウンロードします。

  1. 以下のコマンドを使用してnvmをインストールします

curl -o- https://raw.githubusercontent.com/nvm-sh/nvm/v0.34.0/install.sh | bash

  1. nvmを使用する環境変数を作成します
export NVM_DIR="${XDG_CONFIG_HOME/:-$HOME/.}nvm"
[ -s "$NVM_DIR/nvm.sh" ] && \. "$NVM_DIR/nvm.sh" # This loads nvm
  1. インストールされnvm -vていることが確認できない場合は試してください。nvm以下のスクリプトを実行します

command -v nvm

  1. ノードをインストールするには、以下のコマンドを実行します

nvm install node

  1. ターミナルを再起動した後、ノードのバージョンを確認してください。更新する必要があります

node -v

詳細はこちら:https : //github.com/nvm-sh/nvm


0

これは、システムにNがインストールされていないことを意味します。Nはnpmベースのノードバージョンマネージャーです。最初にノードのあるバージョンをインストールしてから実行することでインストールできます

sudo npm install -g n

これで、nコマンドを使用してノードにバージョンをインストールできます

sudo n stable

上記は最新の安定版をインストールします

sudo n lates

これは最新バージョンをインストールします

以下のようにバージョンを指定して、特定のバージョンをインストールすることもできます

sudo n  10.16.0

-1

私は同じ問題に遭遇しました、これはあなたがそれを解決する方法です:

  1. npm構成プレフィックスを取得する
    npm config get prefix 
    // get -> ${myhome}/.npm-global
  2. 次の行を追加します .zshrc

    # Specify `n` to put the version of `node` in the `.n` directory.
    export N_PREFIX=${myhome}/.npm-global/.n
    
    # Make `nman` command work
    export PATH=${myhome}/.npm-global/bin:$PATH
    
    # Add this line to use `node -v` command
    export PATH=${myhome}/.npm-global/.n/bin:$PATH

リファレンス: GitHub-tj / n:ノードバージョン管理

編集者注:この回答はもともと中国語で書かれており、オンラインツールを使用して翻訳および編集されています。元の回答を確認するには、リビジョン#1を参照してください

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.