cloud9でNode.jsのバージョンを確認してアップデートしようとして失敗した話


注意:本記事は試行錯誤を書いてるので即効性はありません。

積んでる技術書をそろそろ片付けよう

Twitterでバズってたのでノリで買ったけれど、積みっぱなしにしちゃあ意味がない。
せっかくcloud9使ってるんだから、いつもとは違う環境を作ってサクサクやってみよう。

前提

  • 記載内容は2019年2月13日現在
  • 環境はcloud9
  • Node.js触ったこと無いマンが試行錯誤するお話

まずはバージョンを揃えよう

バージョンが異なると本に書いてある内容とは違う挙動をして心が折られるのは技術者あるある話。
そこを揃えてからがスタートですよ。
ということで、バージョンを確認して必要ならアップデートしましょう。

作りたてほやほやのcloud9は何が入ってる?

cloud9のコンソールで作ったばかりの環境にnpmやNode.jsは入っているのか!?
サクサク確認していきましょう。

$ npm version
{ npm: '3.10.10',
  ares: '1.10.1-DEV',
  http_parser: '2.8.0',
  icu: '58.2',
  modules: '48',
  napi: '3',
  node: '6.16.0',
  openssl: '1.0.2q',
  uv: '1.16.1',
  v8: '5.1.281.111',
  zlib: '1.2.11' }

よしよし、npmは入ってますね。
では次、Node.jsのバージョンを見てみましょう。
(おっと!この人npmのバージョン確認時に出ていることに気がついてません!クソザコエンジニアだと早々に露呈してしまいましたね!)

$ node -v
v6.16.0

対象としている技術書では「v8.11.2」を対象としているので、アップデートをする必要がありそうです。

じゃあアップデートしていこう

アップデートする前にnを導入してみましょう。
どうやらこれでインストールや環境の切り替えができるっぽい。
ていうかアップデートを検索するとみーんな入れてるから入れてみよう。
情報は多いほうが検索しやすいしね。

npm install -g n

インストールが終わったらnのバージョン確認してみましょう。

$ n --version
mkdir: cannot create directory ‘/usr/local/n’: Permission denied
mkdir: cannot create directory ‘/usr/local/n’: Permission denied
2.1.12

ぱーみんしょんなんちゃらなんてみえてないぼくはなにもしらないよ
気になるけど今は一旦おいておこう。
だからQiitaに書いてるわけだし。
それではlsオプションでインストール可能なNode.jsの一覧を出してみましょう。

$ n ls
mkdir: cannot create directory ‘/usr/local/n’: Permission denied
mkdir: cannot create directory ‘/usr/local/n’: Permission denied

    0.0.1
   :
   (中略)
   :
    11.8.0

この中に目的の「8.11.2」があるのでインストールできそうです。

一歩前へ出てみよう…

ではインストールしていきましょう。

$ n 8.11.2
mkdir: cannot create directory ‘/usr/local/n’: Permission denied
mkdir: cannot create directory ‘/usr/local/n’: Permission denied

     install : node-v8.11.2
       mkdir : /usr/local/n/versions/node/8.11.2
mkdir: cannot create directory ‘/usr/local/n’: Permission denied

  Error: sudo required

須藤ォ…いるんか…
なんか嫌な予感がしてきました。

$ sudo n 8.11.2                                                                                                                                                                                            
sudo: n: command not found

やぁ、コマンドハウスへようこそ。このcommand not foundはサービスだからまずは落ち着いてほしい。
仕方がないのでsuになってnを実行してみましょう。

$ sudo su
# n 8.11.2
bash: n: command not found

デスヨネー…。
と、ここまでやって時間切れ。
後で続きをやることにします。