Vagrant の Ubuntu に Nuclide Server を入れて Atom からつないだ

Vagrant に入れた Ubuntu 上で Hacklang の勉強しようと思ったのがきっかけ。

MacAtom を Nuclide にして、 Remote Project っていう機能があることに気づいたのでやってみたところ、いろいろとあったのでまとめた。

Nuclide のインストール

Setup http://nuclide.io/docs/setup/

公式サイトには、 Settings (⌘,) の Install タブから nuclide-installer 探して入れろ、もしくは apm install nuclide-installer で入れろ、って一番上に書いてあるけど、

f:id:yonexyonex:20151116022013p:plain

しかしこれがいきなりどっちも罠で、こうして入った Nuclide は何故か死ぬほど重くて本当に使い物にならなかった。 Issue 見たらキレてる人がいて、完全に同感だった。

SLOOOOOW · Issue #232 · facebook/nuclide https://github.com/facebook/nuclide/issues/232

スロォォオオオって言いたくなる気持ち心の底からよくわかる。私の MacBook Pro はこの人のより新しいけど、スペックはだいたい同じで OS は完全に一致だった。

現時点でこの Issue は解決してないようだけど、「ソースからビルドすると軽くなるぜ」みたいな情報をどっかでみかけた(どこだか思い出せない)ので、そのとおりやってみたらさっきまでが嘘のように軽くなって本当にびっくりした。

rm -rf ~/.atom # キレるほど重い nuclide を消す。他にもプラグイン入れてるなら注意したほうがいいかも
git clone git@github.com:facebook/nuclide.git
cd nuclide
./scripts/dev/setup

手順は前出の Setup のページに書かれているとおりで、そのあと Atom を再起動して完了だった。あの異常な重さは一体なんだったんだ。

Nuclide Server のインストール

Node v0.12.0 以上が必要で、 Watchman もあるといいらしい https://github.com/facebook/nuclide/blob/master/pkg/nuclide/server/README.md#nuclide-server-prerequisites

ということでそれらのインストールから

Node.js のインストール

普通に apt-get install しようとすると、 0.10 とかだったんで、まずい。

3 つの方法があるらしいと知った

Linux - Ubuntu でapt を使用してNode.js をインストールする3 つの方法(Ubuntu 15.04, Ubuntu 14.04.2 LTS) - Qiita http://qiita.com/TsutomuNakamura/items/7a8362efefde6bc3c68b

ここでは NodeSource が提供してる方法で 0.12 を入れた https://github.com/nodesource/distributions/blob/master/README.md#installation-instructions

curl -sL https://deb.nodesource.com/setup_0.12 | sudo -E bash -

しかし IPv6 に邪魔されてエラー。申し訳ないけど無効に http://l-w-i.net/t/ubuntu/ipv6_001.txt

# cat >> /etc/sysctl.conf
net.ipv6.conf.all.disable_ipv6 = 1
net.ipv6.conf.default.disable_ipv6 = 1
# sysctl -p

そしてリトライしたらうまくいった

curl -sL https://deb.nodesource.com/setup_0.12 | sudo -E bash -
sudo apt-get install -y nodejs
$ node -v
v0.12.7

Watchman のインストール

すんなりいけた http://facebook.github.io/watchman/docs/install.html#build-install

git clone https://github.com/facebook/watchman.git
cd watchman
git checkout v4.1.0
./autogen.sh
./configure
make
sudo make install

Nuclide Server のインストール

これもあっさりいけた https://github.com/facebook/nuclide/blob/master/pkg/nuclide/server/README.md#installing-nuclide-server

git clone git@github.com:facebook/nuclide.git
cd nuclide
./scripts/dev/setup --no-atom

ホームディレクトリに clone してたので /home/vagrant/nuclide/pkg/nuclide/server/nuclide-start-server に起動コマンドが入った。

Atom からつなぐ

Add Remote Project Folder から

f:id:yonexyonex:20151116022038p:plain

全項目を埋めていく

f:id:yonexyonex:20151116022049p:plain

Vagrant には private_network を有効にして 192.168.33.10 をつけてある。 ssh秘密鍵は、 /Users/yonex/.vagrant.d/boxes/*/1/virtualbox/vagrant_private_key にあった( vagrant ssh-config すると IdentityFile に書いてあるからわかる)

そして、 OK

が、 Mac に Nuclide 入れたタイミングとサーバーに Nuclide Server 入れたタイミングが 1 週間くらい違ったせいか Version mismatch で怒られてうまくいかなかった

f:id:yonexyonex:20151116022105p:plain

きびしい

ここでもう心が折れるかと思ったが、泣きのもう一回で先週 clone した nuclide を pull したうえでビルドしなおして、

cd nuclide
git pull
./scripts/dev/setup

Atom を再起動して再度 Add Remote Project Folder に挑んだところ、無事、接続に成功しました。

f:id:yonexyonex:20151116022119p:plain

本当によかった

おまけ

IntelliJ IDEA を普段から使ってて、 Vagrant での開発も楽にできるようにサポートされているようなので、 IntelliJ IDEA (あるいは PhpStorm) に Hack plugin があれば一番よかったんだけど無いので Atom にチャレンジしたという経緯でした。 JetBrains たのむ

Hack Language Support in PhpStorm Postponed | JetBrains PhpStorm Blog http://blog.jetbrains.com/phpstorm/2015/06/hack-language-support-in-phpstorm-postponed/

関連

Ubuntu の HHVM で FuelPHP の Welcome 見るとこまでは以前やった

yonexyonex.hatenablog.com