【根本未解決】特定のユーザだけ nvm で Node.js のインストールができなかった
事象
デプロイ用のユーザで Node.js の別バージョンを入れようとしたらなぜか N/A のように存在しない扱いになってしまい、インストールができませんでした。
$ nvm install lts/carbon Version '' (with LTS filter 'carbon') not found - try `nvm ls-remote --lts=carbon` to browse available versions. $ nvm ls-remote --lts=carbon N/A
nvm ls-remote
すると以下のような感じに io.js の古いバージョンだけ表示されるという…
$ nvm ls-remote iojs-v1.0.0 iojs-v1.0.1 iojs-v1.0.2 iojs-v1.0.3 iojs-v1.0.4 ...
対処
最悪 gz ファイルをダウンロードして展開・配置すればとりあえずは使えるかなと思っていましたが、インストールできるアカウントでインストールしてディレクトリごと丸っと移動したら普通にnvm use
で使えました…
もう少し具体的に
前提として、nvm で管理している Node.js の実態はホームディレクトリの~/.nvm/versions/node
以下にバージョン単位で置かれています。
こんな感じ。
~/.nvm/versions/node # ls -1 v10.18.1 v12.14.1 v14.17.0 v15.14.0 v8.17.0
以下の手順で問題なく使えました。
1. 正常にインストールできるユーザ(ユーザAとします)でほしいバージョンの Node.js をインストールします。
2. ~/.nvm/versions/node
にバージョンのディレクトリが作成されるので、使いたいユーザ(ユーザBとします)の~/.nvm/versions/node
へ丸っとディレクトリごとコピーします。
3. 念の為、コピーしたディレクトリの所有権をユーザBに変更
4. ユーザBでnvm use <コピーしたバージョン>
を実行
5. node -v
でバージョンが変わっていることを確認
原因はわからずじまい
別のユーザでは通常通り Node.js のバージョンがずらずらと表示され、インストールもできたのでそのサーバから Node.js が置いてあるサーバにつながらないというわけでもないようでした。
ダウンロードできないユーザでも curl コマンドで https://nodejs.org/dist/ は参照できるので、そのユーザだけがつながらないということもなさそう…
あと NVM と付く環境変数も揃えてみましたがだめでした…
なんだったんだ…