web-dev-qa-db-ja.com

NPMは、最新のUbuntu(18.04)インストールのバージョンが正しくありません

通常のインストールでは、Sudo apt install nodejsでNode.jsをインストールし、Sudo apt install npmでNode Package Managerをインストールします。ただし、そうすると、npm -v3.5.2と言います。正常にアップグレードするには、Sudo npm install -g npmを実行します。これは、最新バージョン(この記事の執筆時点では6.0.1)に更新されます。

which npmを実行すると、/usr/local/bin/npmを取得しますが、apt/usr/bin/npmにシンボリックリンクをインストールします。 Sudo apt purge npmでnpmを削除しても、npmのnpmバージョンは/usr/local/bin/npmのままですが、npm -v-bash: /usr/bin/npm: No such file or directoryと表示されます。

多くの記事で、nodejsのインストールにPPAを使用すると言われていますが、aptを介してこれを行うネイティブな方法があるはずです。

DigitalOceanの通常のインストールおよびPPAによるインストール手順:https://www.digitalocean.com/community/tutorials/how-to-install -node-js-on-ubuntu-18-04

PPAを介したインストールに関するTecAdminの指示:https://tecadmin.net/install-latest-nodejs-npm-on-ubuntu/

10
Blairg23

TLDR:この問題は、npmコマンドの Bashキャッシュパス が原因であり、hash -d npmで解決できます。必要でない限り、apt purgeを扱う必要さえありません。

説明

Ubuntuで新しいnpmバージョンを取得するための手順は次のとおりです。まず、OPの説明に従ってインストールを実行します。

$ Sudo apt-get install npm
(...apt installation of npm was successful...)
$ npm -v
3.5.2
$ command -v npm
/usr/bin/npm
$ Sudo npm install -g npm
(...npm installation of npm was successful...so far, so good)

新しいバージョンは/usr/local/bin/npmですでに正常に動作していることがわかりますが、残念ながらBashキャッシュにはまだ/usr/bin/npmがあります:

$ /usr/local/bin/npm -v
6.4.1
$ npm -v
3.5.2
$ command -v npm
/usr/bin/npm
$ type npm
npm is hashed (/usr/bin/npm)

問題を修正するには、Bashキャッシュからそれをクリアします(開いているすべてのシェルでこれを行います)。

$ hash -d npm

これで、新しいバージョンが希望どおりに機能します。

$ npm -v
6.4.1
$ command -v npm
/usr/local/bin/npm
16
krubo

私が見つけた方法は、Sudo apt purge npmを介してnpmをパージし、ln -s /usr/local/bin/npm /usr/bin/npmを介してグローバルインストールへのシンボリックリンクを再作成することです。その修正後、npm -vは期待どおり6.0.1を返します。

11
Blairg23

インストールされたnpmバージョンを制御するには、常にnvm(ノードバージョン制御)を使用します。次の手順でインストールできます。 https://github.com/creationix/nvm その後、次のコマンドを使用して、コンピューターに最新のnpmをインストールします。

nvm install node

1
Farzad