Visual Studio Code を Oracle Linux 7.2 に入れて Visual Studio Code の build もしてみる (update 2016/04/26)


---

2016/04/26
 
* Visual Studio Code 1.0 stable と Visual Studio Code 1.0.1 Insiders Build がリリースされたのでアップデート

---

Markdown Editor として利用している Visual Studio Code が、エクステンションをサポートしたことにより、いろいろ便利になってきています。
 
Mac OS X で人様がお作りになった Visual Studio Code のエクステンションを修正する機会があり、修正による他プラットフォームへの影響や、プラットフォームに依存した結果などを確認するために Linux 環境が必要になってしまいました。
そんな Linux 初心者が、無償利用可能な Oracle Linux 7.2 に Visual Studio Code をインストールした時のメモ。
ついでに vscode の source を git clone して build してみる。  

# **Linux で Visual Studio Code を動作させるための要件は？**

[Visual Studio Code FAQ](https://code.visualstudio.com/Docs/supporting/faq) の [Which OS's are supported?](https://code.visualstudio.com/Docs/supporting/faq#_which-oss-are-supported) に[Requirements for Visual Studio Code](https://code.visualstudio.com/Docs/supporting/requirements) へのリンクがあるので確認。

```
Platforms

VS Code has been tested on the following platforms:

* OS X Yosemite
* Windows 7 (with .NET Framework 4.5), 8.0, 8.1 and 10 (32-bit and 64-bit)
* Linux (Debian): Ubuntu Desktop 14.04, Debian 7
* Linux (Red Hat): Red Hat Enterprise Linux 7, CentOS 7, Fedora 23

Additional Linux requirements

* GLIBCXX version 3.4.15 or later
* GLIBC version 2.15 or later
```

Linux では、GLIBCXX_3.4.15/GLIBC_2.15 or later が必要になり、この条件を満たすディストリビューションを選択する必要がある。個人的には Oracle Linux がもっとも手に入れやすいディストリビューションになるという環境にいるため、Oracle Linux を選択してみた。  
そして、Oracle Linux 6.7 (GLIBC_2.12)では条件を満たせないため、最新の Oracle Linux 7.2 を選択。  

RHEL5/RHEL6 で動かない報告は、[Support RHEL Linux platform #1056](https://github.com/Microsoft/vscode/issues/1056) で issue として報告されており、feature-request として backlog に放り込まれているので、もしかするとサポートされたりするのかな？


# **Oracle Linux 7.2 のダウンロード**

無償利用でもユーザ情報の登録は必要にあり、少し手が多くなってしまいますが、
[Oracle Software Delivery Cloud](http://edelivery.oracle.com/linux) から ISO イメージをダウンロード可能です。(はしょっちゃいます。ごめんなさい)


# **VMware Fusion へのインストール**

動作確認環境なので、VM として用意。VirtualBox にもインストールしてみたが、Video 周りのアクセラレーションの実装なのか、少し反応が悪く、キビキビ動いていた VMware Fusion を選択。


インストールは、下記のドキュメントを参考に。
* [Home >  Compatibility Guides >  Guest Operating System Installation Guide >  Oracle Linux 7](http://partnerweb.vmware.com/GOSIG/OL_7.html)
* [Oracle Linux 7 Installation Guide](https://docs.oracle.com/cd/E52668_01/E63013/html/index.html)

Oracle Linux 7 は、インストール時のベース環境選択にもよるけど、[open-vm-tools](https://github.com/vmware/open-vm-tools) が提供されているので VMware Tools のインストールは必要無い。

* [VMware による open-vm-tools のサポート (2074713)](https://kb.vmware.com/selfservice/microsites/search.do?language=en_US&cmd=displayKC&externalId=2074713)  
  open-vm-tools は完全にサポートされている VMware Tools のオープン ソース実装であるため、open-vm-tools がオペレーティング システムにバンドルされていると、VMware Tools を別途インストールする必要がなくなります。

とりあえず、ソフトウェアの選択で「サーバー(GUI 使用)」を選択してインストール。

# **public-yum のリポジトリ情報をアップデート**
Oracle Linux では  [Oracle Linux Public Yum Server](https://public-yum.oracle.com/)を提供している。
リポジトリの情報をアップデートしておく。

[Manually connecting to the Oracle Linux Yum Serve](https://public-yum.oracle.com/getting-started.html)

```bash
# cd /etc/yum.repos.d
# wget http://yum.oracle.com/public-yum-ol7.repo
```

とりあえず、アップデートしておく。

```bash
# yum update
```

# **Visual Studio Code のインストール**

利用する Visual Studio Code は、[Stable build](https://code.visualstudio.com/#alt-downloads) か開発版となる [Insiders Build](https://code.visualstudio.com/download?insiders=true) を選択することになります。
 

Visual Studio Code のインストールとセットアップは、[Setting up Visual Studio Code: Linux](http://code.visualstudio.com/Docs/editor/setup#_linux) を参照。  

Visual Studio Code 1.0 以降では、いままでの Zip archive 以外に .deb と RPM パッケージが提供される。

RPM パッケージをインストール

```bash
$ sudo yum install vscode-x86_64.rpm 
```

アンインストールする場合。

```bash
$ sudo yum remove code-insiders.x86_64
```

# **Visual Studio Code を起動**

Visua Studio Code Stable Build:

```bash
$ /usr/bin/code
```

Visual Studio Code Insiders Build:

```bash
$ /usr/bin/code-insiders 
```

アーカイブをダウンロード、展開してコマンドを実行するだけ。　
Linux でも簡単に動かすことができました。  

![スクリーンショット 2016-04-26 8.43.44.png](https://qiita-image-store.s3.amazonaws.com/0/65800/5dfa17e5-24b3-cfea-b5a6-3752bf93e8c9.png "スクリーンショット 2016-04-26 8.43.44.png")

メニューを出すには alt キーで。
また、リモートホストから X で画面を飛ばせるが、Mac の XQuartz だと cmd キーが alt キーの変わりになっていたりでオススメできない。

![スクリーンショット 2016-04-26 9.11.33.png](https://qiita-image-store.s3.amazonaws.com/0/65800/9f5280f4-e28e-2ddd-b148-7970804100a7.png "スクリーンショット 2016-04-26 9.11.33.png")


# **Visual Studio Code を build するために必要なパッケージ** 
ついでに、Visual Studio Code を build できる環境も整えておきます。 
エクステンションの動作確認くらいの用途で十分ということであればは必要ないかと思います。

[How to build and run from source](https://github.com/Microsoft/vscode/wiki/How-to-Contribute#build-and-run-from-source) を参考に。

## **build に必要なパッケージ**


* Linux

  * Python v2.7
  * make
  * A proper C/C++11 compiler tool chain, for example GCC
  * native-keymap needs libx11-dev, run: sudo apt-get install libx11-dev
  * Building deb and rpm packages requires fakeroot, run: sudo apt-get install fakeroot


```bash
# yum install gcc-c++ git 
# yum install libX11-devel.x86_64
```

## **Node.js のインストール** 
最小要件としてて v5.10 が必要と書いてあるけど、nodebrew 使って v5.11.0 を入れとく。

```bash
$ curl -L git.io/nodebrew | perl - setup
$ export PATH=$HOME/.nodebrew/current/bin:$PATH
$ nodebrew install-binary v5.11.0
$ nodebrew use v5.11.0
```

## **Microsoft/vscode リポジトリを clone して build 開始**

```bash
$ git clone https://github.com/Microsoft/vscode.git
$ cd vscode && npm install -g mocha gulp
$ ./scripts/npm.sh install --arch=x64
# for 32bit Linux
#./scripts/npm.sh install --arch=ia32
```


## **Code の実行**
シェルプロンプトが返ってきたら、build 完了。
あとは、./scripts/code.sh を実行するだけですが、初回起動時は ffmpeg と Electron の download が入るので Proxy 環境下の人は注意で。

```bash
$ ./scripts/code.sh

こんな感じ。
#$ ./scripts/code.sh 
#[19:25:20] Using gulpfile ~/Gits/vscode/gulpfile.js
#[19:25:20] Starting 'electron'...
#↓ ffmpeg-v0.37.6-darwin-x64.zip [====================] 100%
#↓ electron-v0.37.6-darwin-x64.zip [====================] 100%
#[19:25:47] Finished 'electron' after 28 s
```

Code - OSS Dev (この時点では 1.0.1)のできあがり。

![スクリーンショット 2016-04-26 17.47.50.png](https://qiita-image-store.s3.amazonaws.com/0/65800/27f7caa5-66cc-17ab-4e93-7c5209cac1d3.png "スクリーンショット 2016-04-26 17.47.50.png")


ちなみに scripts/code.sh の中で VSCODE_DEV 環境変数が設定されているのでコメントにすれば製品版と同等の動きになるっぽい。

```
# export VSCODE_DEV=1
```

![スクリーンショット 2016-04-26 17.44.38.png](https://qiita-image-store.s3.amazonaws.com/0/65800/42039c4c-2f5d-3891-0ea2-a28e1e780b11.png "スクリーンショット 2016-04-26 17.44.38.png")





## **Incremental Build**
修正や更新があれば gulp wath で Incremental Build

* Terminal から  

    ```bash
    $ cd vscode && git pull
    $ gulp watch
    ```

* Visual Studio Code から  
あるいは、Visual Studio Code で clone した vscode を workspace として起動する。  
CTRL+SHIFT+B で build が開始される。

    ```bash
    $ cd vscode 
    $ code (or code-insiders)  .
    ```
  
# **まとめ**

プラットフォームにより異なる部分があったりするのでエクステンションを作成する際は気をつけると良いかと思います。
また、Mac OS X と Linux でエクステンションが動かなかったら、 issue として報告するだけでも喜ばれると思います。PATH 表記を考慮しておらず動かないというものが少なからずあったりするので。  

(Solaris でも動くようになんないかなぁ、これ・・・ ボソ

  
# **参考情報**
## **Oracle Linux 7 の関連情報**
* [Oracle Linux 7 の製品ページ](http://linux.oracle.com/)
* [Oracle Linux 7 Documentation](https://docs.oracle.com/cd/E52668_01/index.html)
* [Oracle Linux Public Yum Server](https://public-yum.oracle.com/)