linuxBean14.04(109)SyntaxHighlighter3.0.9をビルドする:失敗の記録

linuxBean14.04(20)BloggerにSyntaxhighliterを導入する方法でこのブログに導入したSyntaxHighlighter3.0.83のソースをダウンロードして圧縮していないshCore.jsをアップロードしてもSyntaxHighlighterが動かない理由がようやくわかりました。shCore.jsはNode.jsで作成されていろいろ処理されてブラウザで使えるようになっているのでした。

前の関連記事:linuxBean14.04(108)Visual Studio Codeのインストール

(2016.5.13追記linuxBean14.04(111)SyntaxHighlighter3.0.9をビルドする:成功編でビルドがうまくいきました。)

SyntaxHighlighter 3.0.9のソースをダウンロード


SyntaxHighlighter3.0.8が3.0.9にバージョンアップしておりSyntaxHighlighter 3.0.9 を node.js でビルドする — Baldanders.infoにビルドの方法が解説してあったのでやってみました。

Release v3.0.9 · alexgorbatchev/syntaxhighlighterからsyntaxhighlighter-3.0.9.tar.gzをダウンロードしました。

ファイルマネージャで右クリック→ここでファイルを展開。

syntaxhighlighter-3.0.9フォルダがでてきます。

README.mdにビルド方法が書いてあります。

Node.jsのパッケージとモジュール一覧を見てみる


ビルドするにはbowerとgruntが必要に思えますがそれをインストールするようには書いておらずSyntaxHighlighter 3.0.9 を node.js でビルドする — Baldanders.infoではnpm installでnode_modulesフォルダが作成されると書いてあります。


とりあえず~/node_modules/.binフォルダをみてみるとjsdocしか入っていません。

install | npm Documentationを読んでみるとnpm installはそこにあるpackage.jsonを読み込んで必要なパッケージをインストールしてくれるようです。

syntaxhighlighter-3.0.9/package.jsonをみるとbowerとかgruntとかいろいろ必要なパッケージがdevDependenciesの項目に書いてありました。

現在入っているパッケージリストはnpm listで見れます。
pq@pq-VirtualBox:~$ which npm
/home/pq/.nvm/versions/node/v6.0.0/bin/npm
まずnpmがどのNode.jsのものなのかwhichコマンドで確認するとlinuxBean14.04(107)nvmでnode.jsのインストールができない問題への対応でインストールしたnvm下のv6.0.0とわかりました。
pq@pq-VirtualBox:~$ npm ls
/home/pq
└─┬ jsdoc@3.3.2
  ├── async@0.9.2
  ├─┬ catharsis@0.8.7
  │ └─┬ underscore-contrib@0.3.0
  │   └── underscore@1.6.0
  ├── escape-string-regexp@1.0.3
  ├── esprima@1.1.0-dev-harmony
  ├── js2xmlparser@0.1.9
  ├── marked@0.3.5
  ├─┬ requizzle@0.2.1
  │ └── underscore@1.6.0
  ├── strip-json-comments@1.0.4
  ├── taffydb@2.6.2
  ├── underscore@1.7.0
  └── wrench@1.5.8
npm lsで現在インストールされているパッケージを見てみました。

~/node_modules/.binフォルダにあるjsdocとその下にずらずらたくさんモジュール名が出てきました。

Npm Listの依存関係を非表示にする | Mawatari.jpによると--depth=0をつけると依存関係を非表示にできるということでやってみるとjsdocだけになりました。
pq@pq-VirtualBox:~$ npm ls --depth=0
/home/pq
└── jsdoc@3.3.2
-gオプションをつけるとグローバルにインストールされたパッケージが出てきます。
pq@pq-VirtualBox:~$ npm ls --depth=0 -g
/home/pq/.nvm/versions/node/v6.0.0/lib
└── npm@3.8.6
うーん、nvmを使っている場合ローカルなパッケージは~/node_modules、グローバルなパッケージは~/.nvm/versions/node/v6.0.0/lib/node_modules、に入っているものをそれぞれ指すようです。

それでローカルなパッケージjsdocが依存しているモジュールは~/node_modules/jsdoc/node_modules、グローバルなパッケージnpmが依存しているモジュールは~/.nvm/versions/node/v6.0.0/lib/node_modules/npm/node_modulesに入っています。
(2016.5.8追記。「グローバルにインストール」の定義は「Terminalからコマンドとして使える」ということでした。linuxBean14.04(110)Node.jsのnpm使い方メモ参照。)

SyntaxHighlighter 3.0.9をビルドする


README.mdの手順通りでビルドできそうなのでやってみます。

パスに日本語が入っているとエラーが出るかもしれないので日本語がないパスで行います。

解凍したsyntaxhighlighter-3.0.9フォルダにpackage.jsonがあるのでそこでnpm install。

npm installの実行結果

うーん、エラーがたくさんでているのでこまま次に進んでもうまくいかなさそうです。

最初の方にでてくるWARNはなんとか乗り切ったようですが40行目でgyp ERR! build errorとなっているのがいただけません。
pq@pq-VirtualBox:~/_tmp/syntaxhighlighter-3.0.9$ npm ls --depth=0
SyntaxHighlighter@3.0.9 /home/pq/_tmp/syntaxhighlighter-3.0.9
├── async@0.2.9
├── bower@1.2.7
├── coffee-script@1.6.3
├── ejs@0.8.4
├── express@3.2.6
├── grunt@0.4.1
├── grunt-cli@0.1.9
├── jade@0.30.0
├── less@1.3.3
├── minimatch@0.2.12
├── node-sass@0.6.7
├── shelljs@0.2.6
└── uglify-js@2.2.5
とりあえずpackage.jsonに書いてあるパッケージはインストールされたようにみえます。

gypのエラーについて調べてみるとnodeのバージョンがよくないようです。

Doesn't support node 5 · Issue #34 · websockets/bufferutil

nodeを4.xに戻せば動くようなのでnvm ls-remoteで調べてみるとnode v4.4.3があったのでこれをnvmでインストールします。
pq@pq-VirtualBox:~/_tmp/syntaxhighlighter-3.0.9$ nvm install v4.4.3
Downloading https://nodejs.org/dist/v4.4.3/node-v4.4.3-linux-x86.tar.xz...
######################################################################## 100.0%
Now using node v4.4.3 (npm v2.15.1)
pq@pq-VirtualBox:~/_tmp/syntaxhighlighter-3.0.9$ which npm
/home/pq/.nvm/versions/node/v4.4.3/bin/npm
このv4.4.3のnpmでnpm installします。
pq@pq-VirtualBox:~/_tmp/syntaxhighlighter-3.0.9$ npm install
npm WARN package.json SyntaxHighlighter@3.0.9 No license field.
ちゃんと処理されたのかわかりませんがすぐにこの一行がでてきて終了しました。
(2016.5.8追記。npm installをやり直すときはnpm installを実行したフォルダに作成されたnode_modulesフォルダを削除しないといけませんでした。)
(2016.5.6追記。node v4.4.3でやり直しても結局v6.0.0と同じ結果でした。syntaxhighlighter-3.0.9 npm install (node v4.4.3))

./node_modules/.bin/bower installの結果

これもうまくいったようですが、次のgrunt buildでにっちもさっちもいかなくなってしまいました。
pq@pq-VirtualBox:~/_tmp/syntaxhighlighter-3.0.9$ ./node_modules/.bin/grunt build
Loading "Gruntfile.coffee" tasks...ERROR
>> Error: /home/pq/_tmp/syntaxhighlighter-3.0.9/node_modules/node-sass/precompiled/linux-ia32/binding.node: undefined symbol: _ZN2v811HandleScopeC1Ev
Warning: Task "build" not found. Use --force to continue.

Aborted due to warnings.

参考にしたサイト


SyntaxHighlighter 3.0.9 を node.js でビルドする — Baldanders.info
Windowsでビルドしています。

Release v3.0.9 · alexgorbatchev/syntaxhighlighter
SyntaxHighlighter 3.0.9のソース。

npm Documentation
npmのマニュアル。

Npm Listの依存関係を非表示にする | Mawatari.jp
npmのインストールパッケージを簡潔に表示する方法。

Doesn't support node 5 · Issue #34 · websockets/bufferutil
gyp ERR! build errorについてはnodeをv4に下げると解決しました。

次の関連記事:linuxBean14.04(110)Node.jsのnpm使い方メモ

PR

0 件のコメント:

コメントを投稿