Ubuntu 12.04でnpm(node.js)を最新版にする あと注意事項
CSSのメタ言語としてRooleを利用している。CSSのメタ言語には他にもStylusだのSASSだのいろいろあるが、私はこのRooleが便利で利用している。PycharmがStylusをサポートしてて嫉妬している。
Rooleの作者に問い合わせ、マニュアルの日本語訳を公開する許諾を得たのでそのうち日本語訳したい。興味のある方がコメントしてくだされば日本語訳も早くするかもしれません。
そんなこんなでRooleを使っているのだが、Rooleはnode.jsのパッケージとして作成されている。node.js自体はUbuntuのaptにも公開されているため簡単にインストールできるのだが、そこはUbuntuの定め。バージョンが古い。
% sudo apt-get install nodejs % npm --version 1.1.4 % sudo npm -g install roole % roole --version 0.4.1
はじめてのNode.js -サーバーサイドJavaScriptでWebアプリを開発する-
- 作者: 松島浩道
- 出版社/メーカー: ソフトバンククリエイティブ
- 発売日: 2013/03/15
- メディア: 大型本
- クリック: 15回
- この商品を含むブログ (5件) を見る
今まで特にこのバージョンでも不自由はしていなかったのだが、rooleをバージョンアップしようとするとnpmが古いという事でアップデート出来なかった。
なので、npmを最新版にする。インターネッツでUbuntu 12.04 LTSのnode.jsを最新版にする方法を検索するとソースからビルドする方法が一般的なようだが、Ubuntuユーザとしてビルドエッセンシャルをインストールするわけには行かない。なので、PPAでnode.jsが無いか調べた。あった。なので追加。
% sudo add-apt-repository ppa:chris-lea/node.js % sudo apt-get update % sudo apt-get dist-upgrade % npm --version 1.3.11
すばらしい。ただし、これには少々問題があったので最後まで読んでね。
そこでrooleのアップデート。
% sudo npm -g update roole % roole --version 0.4.1
あれ。バージョン番号が上がらない。
ここで原因がわからずrooleのアンインストール等を試してみたがどうもバージョン番号が上がらない。最新版の「0.6.2」をバージョン指定をしてもバージョン番号が上がらない。なぜ? npmでインストールしたバージョンを見ても上がらない。原因がわかるまで10分以上かかった。
% which roole /usr/local/bin/roole % cat /usr/local/bin/roole| grep require var fs = require('fs'); var path = require('path'); var mkdirp = require('mkdirp'); var program = require('commander'); var roole = require('../lib/roole'); % cat /usr/local/lib/node_modules/roole/package.json | grep version "version": "0.4.1",
バージョンが上がっていない。
だが思い出してみるとインストール時とPATHが違う。
% sudo npm -g install roole ... /usr/bin/roole -> /usr/lib/node_modules/roole/bin/roole roole@0.6.2 /usr/lib/node_modules/roole ├── pinpoint@1.1.0 ├── promise-now@1.1.0 ├── commander@2.0.0 ├── chokidar@0.6.3 ├── roole-parser@0.12.0 ├── fs-extra@0.6.4 (jsonfile@1.0.1, ncp@0.4.2, mkdirp@0.3.5, rimraf@2.2.2) ├── roole-compiler@0.5.2 (tree-transformer@1.0.0) ├── roole-prefixer@0.3.1 (intersect@0.0.3, roole-node@0.5.1, tree-transformer@1.0.0) └── roole-evaluator@0.21.0 (promise-any-first@1.0.0, roole-error@0.1.0, intersperse@1.0.0, roole-node@0.5.1, natural-range@1.0.0, floader@1.0.0, tree-transformer@1.0.0, tree-visitor@1.0.0, path-br@1.0.0, roole-builtin@0.4.0, tree-transformer-async@1.0.0)
これは気づかなかった。
PPAのnode.jsは「/usr/bin」にnpmパッケージをインストールするが、aptのnode.jsは「/usr/local/bin」にインストールするようだ。古いnpmパッケージが上書きされずに別のPATHにインストールされてしまう。この理由からコマンドの探索PATHが先にある「/usr/local/bin」にある古いパッケージが優先して使われてしまう。この問題さえわかればこのとおり。
% /usr/bin/roole --version 0.6.2
泣けた。久しぶりにハマった気がする。固定概念はよくない。
この問題はPPAのnode.jsを使ったからか、そもそもnode.jsがインストールPATHを変更したのか調べていないが、ハマる人がいるのではないかとメモに残しておく。npmでは数個のパッケージしかインストールしていなかったので、その場しのぎで手動で実行ファイルを削除し、「/usr/local/lib/node_modules」をリネームしておいた。これでいいかどうかはわからない。詳しい方教えて下さい。
Roole便利だよ。Roole!!
Web制作者のためのSassの教科書 これからのWebデザインの現場で必須のCSSメタ言語
- 作者: 平澤隆,森田壮
- 出版社/メーカー: インプレスジャパン
- 発売日: 2013/09/13
- メディア: 単行本(ソフトカバー)
- この商品を含むブログ (1件) を見る
- 作者: 藤本壱
- 出版社/メーカー: 藤本 壱
- 発売日: 2013/05/30
- メディア: Kindle版
- この商品を含むブログを見る
- 作者: 清水俊博,大津繁樹,Jxck,小林秀和,佐々木庸平,篠崎祐輔,高木敦也,西山雄也
- 出版社/メーカー: アスキー・メディアワークス
- 発売日: 2012/10/26
- メディア: 大型本
- 購入: 31人 クリック: 803回
- この商品を含むブログ (6件) を見る
- 作者: 高橋登史朗
- 出版社/メーカー: 秀和システム
- 発売日: 2013/03
- メディア: 単行本
- クリック: 8回
- この商品を含むブログ (3件) を見る