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


16

通常のインストールでは、sudo apt install nodejsNode.js sudo apt install npmをインストールしてからNode Package Managerをインストールします。しかし、そうすることで、npm -vと言い3.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です。

通常およびPPAを介したインストールに関するDigitalOceanの指示: 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/

回答:


29

TLDR:この問題は、Bashnpmコマンドのパスキャッシュするために発生し、で解決できますhash -d npm。必要がapt purgeない限り、対処する必要さえありません。

説明

npmUbuntuで新しいバージョンを取得するための手順は次のとおりです。まず、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

1
私は実際にこの答えが自分よりも好きです。
ブレアグ

これで問題が解決しました。どうもありがとうございます。素晴らしい説明も。私にとって不明な点の1つは、bashキャッシュをクリアすると問題が解決する理由の正確な性質です。npm保存されているを削除した方が良いと/usr/bin/npm思いませんか?また、両方のバージョンがインストールされたままの場合、bashキャッシュをクリアした後に正しいバージョンが選択されるのはなぜですか?
temporary_user_name

12

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


2
Android 6.0.1でUserLAndを介して実行されるUbuntu 18.04で動作します。ありがとうございました!:)
l3l_aze

1
OPこれを答えとしてマークする必要があります。
ロバートマン

奇妙なことに、私にとってはかなり違いました。私は更新バージョンを持っていた/usr/bin/npmので、を使用して逆のルートに行きましたln -s /usr/bin/npm /usr/local/bin/npm。奇妙なことですが、あなたの答えは、間違ったバージョンの問題に対処する方法を見つけるのに役立ちました。
LordAnomander

2

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

nvm install node

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