Help us understand the problem. What is going on with this article?

nodistでnpm6.2.0以降にアップデート出来なかった話

nodistでnode.jsのv10.10.0(2018/09時点の最新版)をインストールした際に、npmのバージョンをv6.4.1にアップデートするのが上手くいかなくて手間取った話。


<UPDATE 2019/04/11>
久しぶりに確認に行ったら、nodistは0.9.1がリリースされていました。
本記事記載バージョンは0.8.8です。
最新版を利用すれば色々と問題解決すると思います(8/26一寸補足:この記事を参照した上で、再インストールして解消されている記事がありました)。
この記事を参考にする際には、お手元のバージョンを確認の上で読んでいただけるとお手間を取らせないで済むかと思います。
</UPDATE 2019/04/11>

<UPDATE 2019/02/27>
本文記載箇所以外にもいくつか修正ポイントがあるらしく、フォーク先のastrata-eu/nodist修正コミット内容もトラブルが解消しなければ参考になるなと思ってます。
</UPDATE 2019/02/27>

その道の人たちは問題なく解決できてる話だとは思いますが・・・。

>nodist 10.10.0
Installing 10.10.0
 10.10.0 [===============] 24164/24164 KiB 100% 0.0s
Installation successful.

>node --version
v10.10.0

>npm --version
4.0.5

nodistでnode.jsの最新版を指定しても、そのままではnpmは対応するバージョンにはならない( node.jsバージョン対応表)。

nodist npm matchでアップグレードを図るがエラー発生。
モジュールのDLあたりで失敗している。
nodist_npm_mach_error.PNG

メッセージ的には、DL用URLの問題な感じですね。
Error: Failed to read response from https://codeload.github.com/npm/npm/tar.gz/v6.4.1

どうも2018/07/14のv.6.2.0リリースから、リポジトリが移動した模様。

https://github.com/npm/npm
↓↓↓↓↓↓↓↓↓↓↓
https://github.com/npm/cli

既にPullReqは出てます。っが・・・・一月近くは反応なし(2018/09現在)。
https://github.com/marcelklehr/nodist/pull/217

nodistのgitコミット状況。今年はお忙しいのね。
nodist_commit状況.PNG

仕方がないので、PullReq同様URLを変更して対応。

nodist_npm_設定ファイル.PNG

Nodeistインストール先のlibディレクトリ下にある、npm.jsを修正(codeload.github.com/npm/npm ⇒ codeload.github.com/npm/cli)。

/**
 * Get a download URL for the version
 * @param {string} version
 * @return {string}
 */
NPMIST.downloadUrl = function(version){
  return 'https://codeload.github.com/npm/cli/tar.gz/vVERSION'
    .replace('VERSION',version.replace('v',''));
};

ところで、修正前に実行した「nodist npm match」の失敗で時点で、npmのバージョンdirができちゃいます。
nodist_npm_install状況.PNG

dirがあると「nodist npm match」はエラーにはならないけど、versionを確認するとエラー
nodist_npm_version_error.PNG

dir削除後にnpm matchさせれば無事にインストールされてアップデート完了
nodist_npm_match_success.PNG

・・・Qiita初投稿なので、お作法とか分かっていません。何かあったら優しく教えてください。

Why not register and get more from Qiita?
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away
Comments
No comments
Sign up for free and join this conversation.
If you already have a Qiita account
Why do not you register as a user and use Qiita more conveniently?
You need to log in to use this function. Qiita can be used more conveniently after logging in.
You seem to be reading articles frequently this month. Qiita can be used more conveniently after logging in.
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away
ユーザーは見つかりませんでした