通常のインストールでは、Sudo apt install nodejs
でNode.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
を介してこれを行うネイティブな方法があるはずです。
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/
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
私が見つけた方法は、Sudo apt purge npm
を介してnpmをパージし、ln -s /usr/local/bin/npm /usr/bin/npm
を介してグローバルインストールへのシンボリックリンクを再作成することです。その修正後、npm -v
は期待どおり6.0.1
を返します。
インストールされたnpmバージョンを制御するには、常にnvm
(ノードバージョン制御)を使用します。次の手順でインストールできます。 https://github.com/creationix/nvm その後、次のコマンドを使用して、コンピューターに最新のnpmをインストールします。
nvm install node