CentOS 7 の新環境を作り、epelリポジトリからyumでnpmをインストール。
sudo yum -y install epel-release sudo yum -y install npm
npmのバージョンを確認すると
3.10.10
と古かったため
sudo npm -g update npm
としたところ
- fstream-npm@1.2.0 node_modules/npm/node_modules/fstream-npm - normalize-git-url@3.0.2 node_modules/npm/node_modules/normalize-git-url - realize-package-specifier@3.0.3 node_modules/npm/node_modules/realize-package-specifier /usr/lib └── (empty) npm ERR! Linux 3.10.0-862.el7.x86_64 npm ERR! argv "/usr/bin/node" "/bin/npm" "-g" "update" "npm" npm ERR! node v6.14.3 npm ERR! npm v3.10.10 npm ERR! path /usr/lib/node_modules/npm/node_modules/fs-write-stream-atomic npm ERR! code EEXIST npm ERR! errno -17 npm ERR! syscall mkdir npm ERR! EEXIST: file already exists, mkdir '/usr/lib/node_modules/npm/node_modules/fs-write-stream-atomic' npm ERR! File exists: /usr/lib/node_modules/npm/node_modules/fs-write-stream-atomic npm ERR! Move it away, and try again. npm ERR! Please include the following file with any support request: npm ERR! /home/username/npm-debug.log npm ERR! code 1
のようなエラーが出てしまい、更新に失敗します。
そればかりか…
$ npm -v -bash: npm: コマンドが見つかりません $ which npm /usr/bin/which: no npm in (/usr/local/bin:/usr/bin:/usr/local/sbin:/usr/sbin:/home/username/.local/bin:/home/username/bin)
なんとnpm本体が消えてしまいました。
そんな馬鹿な…
流石にちょっと困ってしまったので、いろいろ調べたところ、npm公式のGitHubページのIssueでも同様の報告が上がっていました。
Try to update the npm cli and got an error #15821 – GitHub
内容を見ていくと、epelではなくnodejs公式のnodesourceというリポジトリを使用したら成功したという記述が。
半信半疑ながらも、nodesourceを使うことにしました。
とりあえず、一旦npmをアンインストールします。
sudo yum -y remove npm
$ sudo yum -y remove npm 読み込んだプラグイン:fastestmirror 依存性の解決をしています --> トランザクションの確認を実行しています。 ---> パッケージ npm.x86_64 1:3.10.10-1.6.14.3.1.el7 を 削除 --> 依存性の処理をしています: npm = 1:3.10.10-1.6.14.3.1.el7 のパッケージ: 1:nodejs-6.14.3-1.el7.x86_64 --> 依存性の処理をしています: npm = 1:3.10.10-1.6.14.3.1.el7 のパッケージ: 1:nodejs-6.14.3-1.el7.x86_64 --> トランザクションの確認を実行しています。 ---> パッケージ nodejs.x86_64 1:6.14.3-1.el7 を 削除 --> 依存性解決を終了しました。 依存性を解決しました ======================================================================================================================== Package アーキテクチャー バージョン リポジトリー 容量 ======================================================================================================================== 削除中: npm x86_64 1:3.10.10-1.6.14.3.1.el7 @epel 9.8 M 依存性関連での削除をします: nodejs x86_64 1:6.14.3-1.el7 @epel 16 M トランザクションの要約 ======================================================================================================================== 削除 1 パッケージ (+1 個の依存関係のパッケージ) インストール容量: 26 M Downloading packages: Running transaction check Running transaction test Transaction test succeeded Running transaction 削除中 : 1:npm-3.10.10-1.6.14.3.1.el7.x86_64 1/2 警告: ファイル /usr/lib/node_modules/npm/scripts/update-authors.sh: 削除に失敗しました: そのようなファイルやディレクトリはありません 警告: ファイル /usr/lib/node_modules/npm/scripts/relocate.sh: 削除に失敗しました: そのようなファイルやディレクトリはありません 警告: ファイル /usr/lib/node_modules/npm/scripts/release.sh: 削除に失敗しました: そのようなファイルやディレクトリはあり ません 警告: ファイル /usr/lib/node_modules/npm/scripts/publish-tag.js: 削除に失敗しました: そのようなファイルやディレクトリは ありません 警告: ファイル /usr/lib/node_modules/npm/scripts/maketest: 削除に失敗しました: そのようなファイルやディレクトリはありま せん 警告: ファイル /usr/lib/node_modules/npm/scripts/install.sh: 削除に失敗しました: そのようなファイルやディレクトリはあり ません 警告: ファイル /usr/lib/node_modules/npm/scripts/index-build.js: 削除に失敗しました: そのようなファイルやディレクトリは ありません 警告: ファイル /usr/lib/node_modules/npm/scripts/gen-changelog: 削除に失敗しました: そのようなファイルやディレクトリはありません 警告: ファイル /usr/lib/node_modules/npm/scripts/doc-build.sh: 削除に失敗しました: そのようなファイルやディレクトリはあ りません 警告: ファイル /usr/lib/node_modules/npm/scripts/dev-dep-update: 削除に失敗しました: そのようなファイルやディレクトリは ありません 警告: ファイル /usr/lib/node_modules/npm/scripts/dep-update: 削除に失敗しました: そのようなファイルやディレクトリはあり ません 警告: ファイル /usr/lib/node_modules/npm/scripts/clean-old.sh: 削除に失敗しました: そのようなファイルやディレクトリはあ りません 警告: ファイル /usr/lib/node_modules/npm/scripts/changelog.js: 削除に失敗しました: そのようなファイルやディレクトリはあ りません 警告: ファイル /usr/lib/node_modules/npm/scripts: 削除に失敗しました: そのようなファイルやディレクトリはありません 警告: ファイル /usr/lib/node_modules/npm/package.json: 削除に失敗しました: そのようなファイルやディレクトリはありません 警告: ファイル /usr/lib/node_modules/npm/node_modules/realize-package-specifier: 削除に失敗しました: そのようなファイル やディレクトリはありません 警告: ファイル /usr/lib/node_modules/npm/node_modules/normalize-git-url: 削除に失敗しました: そのようなファイルやディレ クトリはありません 警告: ファイル /usr/lib/node_modules/npm/node_modules/fstream-npm: 削除に失敗しました: そのようなファイルやディレクトリ はありません 警告: ファイル /usr/lib/node_modules/npm/node_modules.bundled/write-file-atomic/package.json: 削除に失敗しました: そのようなファイルやディレクトリはありません 警告: ファイル /usr/lib/node_modules/npm/node_modules.bundled/write-file-atomic/index.js: 削除に失敗しました: そのようなファイルやディレクトリはありません 警告: ファイル /usr/lib/node_modules/npm/node_modules.bundled/write-file-atomic/README.md: 削除に失敗しました: そのよう なファイルやディレクトリはありません 警告: ファイル /usr/lib/node_modules/npm/node_modules.bundled/write-file-atomic/LICENSE: 削除に失敗しました: そのような ファイルやディレクトリはありません 警告: ファイル /usr/lib/node_modules/npm/node_modules.bundled/write-file-atomic: 削除に失敗しました: そのようなファイル やディレクトリはありません 警告: ファイル /usr/lib/node_modules/npm/node_modules.bundled/wrappy/wrappy.js: 削除に失敗しました: そのようなファイルやディレクトリはありません 警告: ファイル /usr/lib/node_modules/npm/node_modules.bundled/wrappy/package.json: 削除に失敗しました: そのようなファイ ルやディレクトリはありません 警告: ファイル /usr/lib/node_modules/npm/node_modules.bundled/wrappy/README.md: 削除に失敗しました: そのようなファイルやディレクトリはありません 警告: ファイル /usr/lib/node_modules/npm/node_modules.bundled/wrappy/LICENSE: 削除に失敗しました: そのようなファイルやディレクトリはありません 警告: ファイル /usr/lib/node_modules/npm/node_modules.bundled/wrappy: 削除に失敗しました: そのようなファイルやディレクトリはありません 警告: ファイル /usr/lib/node_modules/npm/node_modules.bundled/which/which.js: 削除に失敗しました: そのようなファイルやディレクトリはありません 警告: ファイル /usr/lib/node_modules/npm/node_modules.bundled/which/package.json: 削除に失敗しました: そのようなファイルやディレクトリはありません 警告: ファイル /usr/lib/node_modules/npm/node_modules.bundled/which/node_modules/isexe/windows.js: 削除に失敗しました: そのようなファイルやディレクトリはありません 警告: ファイル /usr/lib/node_modules/npm/node_modules.bundled/which/node_modules/isexe/package.json: 削除に失敗しました: そのようなファイルやディレクトリはありません 警告: ファイル /usr/lib/node_modules/npm/node_modules.bundled/which/node_modules/isexe/mode.js: 削除に失敗しました: そのようなファイルやディレクトリはありません 警告: ファイル /usr/lib/node_modules/npm/node_modules.bundled/which/node_modules/isexe/index.js: 削除に失敗しました: そ のようなファイルやディレクトリはありません 警告: ファイル /usr/lib/node_modules/npm/node_modules.bundled/which/node_modules/isexe/access.js: 削除に失敗しました: そのようなファイルやディレクトリはありません 警告: ファイル /usr/lib/node_modules/npm/node_modules.bundled/which/node_modules/isexe/README.md: 削除に失敗しました: そのようなファイルやディレクトリはありません 警告: ファイル /usr/lib/node_modules/npm/node_modules.bundled/which/node_modules/isexe/LICENSE: 削除に失敗しました: そのようなファイルやディレクトリはありません 警告: ファイル /usr/lib/node_modules/npm/node_modules.bundled/which/node_modules/isexe/.npmignore: 削除に失敗しました: そのようなファイルやディレクトリはありません 警告: ファイル /usr/lib/node_modules/npm/node_modules.bundled/which/node_modules/isexe: 削除に失敗しました: そのようなファイルやディレクトリはありません 警告: ファイル /usr/lib/node_modules/npm/node_modules.bundled/which/node_modules: 削除に失敗しました: そのようなファイルやディレクトリはありません 警告: ファイル /usr/lib/node_modules/npm/node_modules.bundled/which/bin/which: 削除に失敗しました: そのようなファイルや ディレクトリはありません 警告: ファイル /usr/lib/node_modules/npm/node_modules.bundled/which/bin: 削除に失敗しました: そのようなファイルやディレ クトリはありません 警告: ファイル /usr/lib/node_modules/npm/node_modules.bundled/which/README.md: 削除に失敗しました: そのようなファイルや ディレクトリはありません 警告: ファイル /usr/lib/node_modules/npm/node_modules.bundled/which/LICENSE: 削除に失敗しました: そのようなファイルやデ ィレクトリはありません 警告: ファイル /usr/lib/node_modules/npm/node_modules.bundled/which/CHANGELOG.md: 削除に失敗しました: そのようなファイルやディレクトリはありません 警告: ファイル /usr/lib/node_modules/npm/node_modules.bundled/which: 削除に失敗しました: そのようなファイルやディレクト リはありません 警告: ファイル /usr/lib/node_modules/npm/node_modules.bundled/validate-npm-package-name/package.json: 削除に失敗しました: そのようなファイルやディレクトリはありません 警告: ファイル /usr/lib/node_modules/npm/node_modules.bundled/validate-npm-package-name/node_modules/builtins/package.json: 削除に失敗しました: そのようなファイルやディレクトリはありません 警告: ファイル /usr/lib/node_modules/npm/node_modules.bundled/validate-npm-package-name/node_modules/builtins/builtins.json: 削除に失敗しました: そのようなファイルやディレクトリはありません 警告: ファイル /usr/lib/node_modules/npm/node_modules.bundled/validate-npm-package-name/node_modules/builtins/Readme.md: 削除に失敗しました: そのようなファイルやディレクトリはありません 警告: ファイル /usr/lib/node_modules/npm/node_modules.bundled/validate-npm-package-name/node_modules/builtins/History.md: 削除に失敗しました: そのようなファイルやディレクトリはありません 警告: ファイル /usr/lib/node_modules/npm/node_modules.bundled/validate-npm-package-name/node_modules/builtins/.travis.yml: 削除に失敗しました: そのようなファイルやディレクトリはありません 警告: ファイル /usr/lib/node_modules/npm/node_modules.bundled/validate-npm-package-name/node_modules/builtins: 削除に失 敗しました: そのようなファイルやディレクトリはありません 警告: ファイル /usr/lib/node_modules/npm/node_modules.bundled/validate-npm-package-name/node_modules: 削除に失敗しました: そのようなファイルやディレクトリはありません 警告: ファイル /usr/lib/node_modules/npm/node_modules.bundled/validate-npm-package-name/index.js: 削除に失敗しました: そのようなファイルやディレクトリはありません 警告: ファイル /usr/lib/node_modules/npm/node_modules.bundled/validate-npm-package-name/README.md: 削除に失敗しました: そのようなファイルやディレクトリはありません 警告: ファイル /usr/lib/node_modules/npm/node_modules.bundled/validate-npm-package-name/LICENSE: 削除に失敗しました: そ のようなファイルやディレクトリはありません 警告: ファイル /usr/lib/node_modules/npm/node_modules.bundled/validate-npm-package-name/.npmignore: 削除に失敗しました: そのようなファイルやディレクトリはありません (省略)
大量の”ファイルが見つかりません”エラーが。
やっぱり本当に消えてしまってるようです…
アンインストールが完了したらnodesourceリポジトリをインストールします。
curl -sL https://rpm.nodesource.com/setup_8.x | sudo bash -
処理が完了したら、”npm”ではなく”nodejs”パッケージをインストールします。
sudo yum install -y nodejs
パッケージ名はnodejsですが、実際には同時にnpmもインストールされているため、インストールが完了すればnpmも使えます。
$ npm -v 6.4.1
バージョンも新しくなっています。
$ sudo npm -g update npm $ which npm /usr/bin/npm
アップデートも問題なく動作するようになったようです。
しかし、安定性の高いはずのepelリポジトリのnpmが致命的なバグを抱えたままになっているというのは…大丈夫なんでしょうか…