macOSでES2016を触るべくJavaScriptエンジンをインストールしようとmozjs-45.0.2のtarballをダウンロードしてビルドしたがデフォルトインストーラではライブラリが1つインストールされなかったので手動で作業して事なきを得た

[Sponsored Link]


当ブログでは「役に立った!」「写真使いました!」などご参考頂いた方からのAmazonギフト券の寄付をお待ち致しております。

Share on FacebookTweet about this on TwitterShare on Google+Share on TumblrPin on PinterestShare on LinkedInDigg this

ReactやNode.js華やかなりしであるが、それはともかく基礎的なES2016の学習をしようと思い、ReactでもNodeでもなくmacOS SierraにJavaScriptエンジンであるmozjsをインストールしようと血迷った。

MacPortsではバージョンがなぜか古いままだったのでMozillaからmozjs-45.0.2.tar.bz2をダウンロード。

https://people.mozilla.org/~sfink/mozjs-45.0.2.tar.bz2

手順としては簡単で、適当なディレクトリでtarballをtarで展開して(私はブラウザからダウンロードしたので直接Downloadsフォルダで展開してしまった)、展開されたディレクトリにあるINSTALLファイルに書いてある手順にしたがって作業をすればいいだけである。

と、思ったのだが……。

や、厳密には、ほぼ手順通りであった。
たぶん他のUNIX系OSであっても、私がmacOS上で作業したように、おそらく、スムーズにコトは運ぶはずだ。

まあ、こんなふうに、INSTALLファイルに書かれているとおりに、実行したわけだ。

cd js/src
mkdir obj
cd obj
../configure && make

コンパイル時間はマシンスペックや同時に走っているプロセスに依存するのでなんとも言えないが、私のMBP(Retina,13-inch,Early 2015)では30分ぐらいで終わった。

終わったらmake installである。
当然/usr/local配下にインストールされるので、rootで実行する必要がある。
「zura」は私のユーザ名なので、その辺は適当にやってくださいな。

sudo su - root
cd ~zura/Downloads/mozjs-45.0.2/js/src/obj
make install

出力は、こんな感じである。

root# make install 
/Applications/Xcode.app/Contents/Developer/usr/bin/make -C js/src install
make[1]: Circular js.pc <- js.pc dependency dropped.
../../config/nsinstall -t js.pc /usr/local/lib/pkgconfig
../../config/nsinstall -t js-config.h /usr/local/include/mozjs-45
/Users/zura/Downloads/mozjs-45.0.2/js/src/obj/_virtualenv/bin/python -m mozbuild.action.process_install_manifest --no-remove /usr/local/include/mozjs-45 ../../_build_manifests/install/dist_include
From /usr/local/include/mozjs-45: Kept 0 existing; Added/updated 141; Removed 0 files and 0 directories.
../../config/nsinstall -t js-config /usr/local/bin
../../config/nsinstall -t libjs_static.a /usr/local/lib
mv -f /usr/local/lib/libjs_static.a /usr/local/lib/libjs_static.ajs
../../config/nsinstall -t libmozjs-45.dylib /usr/local/lib
../../config/nsinstall -t libmozjs-45.dylib /usr/local/lib
/Applications/Xcode.app/Contents/Developer/usr/bin/make -C shell install
../../../config/nsinstall -t js /usr/local/bin

うん、よいよい。しかし、rootから一般ユーザに戻ってjsコマンドを叩くと…しょんぼりな結果に。

zura> js
dyld: Library not loaded: @executable_path/libmozglue.dylib
  Referenced from: /usr/local/bin/js
  Reason: image not found
Abort

ライブラリがないといわれてしまう。
おいー。インストールしてくれへんのかいな。
findで/usr/local配下をあさる。

> find /usr/local -name libmozglue.dylib

なんも表示されん…。
じゃあ、インストール元(mozjs-45.0.2/js/src/obj)配下は、というと…。

> find . -name libmozglue.dylib
./dist/bin/libmozglue.dylib
./dist/sdk/lib/libmozglue.dylib
./mozglue/build/libmozglue.dylib

ありまんがな。
そいじゃnsinstallコマンドはあるんかいな?

> find . -name nsinstall
./config/nsinstall
./dist/bin/nsinstall

dist/bin/nsinstallがある。
これやな。
ということで試しにdist/bin/libmozglue.dylibを入れることにした。
あ、例によってrootにsuしてからの作業(さっき書いたのでsu部分は省略)。

cd dist/bin
./nsinstall -t libmozglue.dylib

特にメッセージ出力なく終わった。本当にインストールされたのかを確認。

# find /usr/local -name libmozglue.dylib
/usr/local/lib/libmozglue.dylib

インストールされた。
では、さっそくjsコマンドを実行。

> js
js> let a = 10
js> a == 10
true
js> class Test {
  constructor () {
    let x = 10;
  }
}
js> let y = new Test();

ES2016わかってないので(だって勉強するために入れたんだもん)、上のコード例は適当なんだけど、letもclassも使えるからES2016のコードが書けるjsがインストールされたことは確認できた。

ということで、やっとこさスタートラインにきたのであった。

WebデベロッパーのためのReact開発入門 JavaScript UIライブラリの基本と活用改訂新版JavaScript本格入門 ~モダンスタイルによる基礎から現場での応用まで初めてのJavaScript 第3版確かな力が身につくJavaScript「超」入門 (確かな力が身につく「超」入門シリーズ)関数型プログラミングの基礎 JavaScriptを使って学ぶ

Share on FacebookTweet about this on TwitterShare on Google+Share on TumblrPin on PinterestShare on LinkedInDigg this

当ブログでは「役に立った!」「写真使いました!」などご参考頂いた方からのAmazonギフト券の寄付をお待ち致しております。


Atsushi Ezura について

ナチュラルな女性のしぐさや表情を撮りたいIT系エンジニア。女性モデル募集中プロフィール
カテゴリー: JavaScript, インストール, コンピュータ, プログラミング言語 タグ: , , , , , パーマリンク

コメントを残す

メールアドレスが公開されることはありません。