Ubuntuにnodeとnpmをインストールする

κeenです。textlintを導入しようとしたら案の定nodeのツーリングで困ったので解決策を書き留めます。

nodeくらい素直にインストールすればよさそうですが、あらゆる手段がダメでした。

  • Emacsからtextlintを叩きたいので相性の悪いnodenvとnvmはなし
  • apt経由だとnodeは入るがnpmは入らない。そしてnpmは依存関係が壊れていてインストールできない
  • node公式のtarballにはインストールスクリプトがない

aptでnpmが壊れている様子です。

$ sudo apt install npm
パッケージリストを読み込んでいます... 完了
依存関係ツリーを作成しています
状態情報を読み取っています... 完了
インストールすることができないパッケージがありました。おそらく、あり得
ない状況を要求したか、(不安定版ディストリビューションを使用しているの
であれば) 必要なパッケージがまだ作成されていなかったり Incoming から移
動されていないことが考えられます。
以下の情報がこの問題を解決するために役立つかもしれません:

以下のパッケージには満たせない依存関係があります:
 npm : 依存: node-gyp (>= 0.10.9) しかし、インストールされようとしていません
E: 問題を解決することができません。壊れた変更禁止パッケージがあります。

nodenvやnvmのemacsプラグインを使う手もありますが別にnodeのバージョン管理をしたい訳ではないのでやりません。 デフォルトのパスくらい用意して欲しい……。ちゃんと調べたらあるのかな。

npmだけダウンロードしてこようとしたら、「nodeと一緒に配布されてるからそれ使え」と書いてありました。

node公式のtarballはbinとかlibとかが置かれているだけです。インストールスクリプト INSTALL ファイルはありませんし README にもインストール方法が書かれていませんでした。

仕方ないので自分でスクリプトを書きました。 一応インストール、アンインストールともに動かして確認してます。

小言ですがインストール方法を提示するときは必ずアンインストール方法も提示しましょうね。 アンインストールが自明にインストールの逆操作ならいいんですが多くの場合そうでもないので。

公式から落としてきたtarballを展開すると出てくるディレクトリにこのスクリプトを放り込んで叩くと1インストールできます。

因みにtarballのSHA256のチェックサムはここにあるようです https://nodejs.org/dist/v10.15.1/SHASUMS256.txt.asc 。 どうしてダウンロードボタンの横にリンクを置いてくれないんだろう…。

ともあれ、これでインストールできました。つらい。


  1. 実際にはスクリプトを叩いたカレントディレクトリが該当ディレクトリであればいいのでスクリプトパスはどこでもいいのですが [return]
Written by κeen
Older article
Effective Idris: Lazy