Windows Subsystem for Linux(旧bash on windows)からPhpStormを動かす


グッバイcmder

ヾ(・ω<)ノ" 三三三● ⅱⅲ コロコロ♪

関連記事
* Bash on Ubuntu on Windowsを使う(1)
* Bash on Ubuntu on Windowsを使う(2):初期設定
* Bash on Ubuntu on Windowsを使う(3):WindowsからLinuxを使う


------------------- ↓ 余談はここから ↓-------------------

Windows Creators Update以降、
Windows上で動作するLinux環境が充実してきた。
現在では

とストアに並び、
自由にインストール。
ターミナルを実行すれば簡単にLinux環境が動く上、
Cygwinと違いエミュレータではないので高速動作する。

私はPhpStormというIDEを使っているが、
これにはターミナルが実装されていて、
Pathを指定すればWSL上のPHPも実行することができる。
PathがWindowsと異なり、
ほとんど使い物にならない。

そこで発想を変えてPhpStormをWSL上で動かすことができるのか調べてみたところ、
どうやら不可能ではないらしい。


------------------- ↓ 本題はここから ↓-------------------

PhpStorm on Debian GNU/Linux

VcXsrv Windows X Serverのインストール

XサーバーにはVcXsrvを使います。
以下のページよりファイルをダウンロードしてWindows上でインストールする
https://sourceforge.net/projects/vcxsrv/files/vcxsrv/

ダウンロードファイルを実行して、
何も考えずNextを押しましょう。
実行後もNextを連打。
常駐させておく。

以下を参考にどうぞ。

参考:
http://vogel.at.webry.info/201612/article_3.html

WSLのインストール

こちらは主題ではないので、
別の記事を参考にインストールしてほしい。
ここではDebian GNU/Linuxを使っている。

各種パッケージは予め入れておく
$ sudo apt-get install bash-completion build-essential x11-apps libxtst6 git 
localeの状態を確認
$ sudo apt-get install task-japanese
# sudo vi /etc/locale.gen
ja_JP.UTF-8の行のコメントを解除
$ sudo locale-gen
$ sudo update-locale LANG=ja_JP.UTF-8
$ locale
LANG=ja_JP.UTF-8
LANGUAGE=
LC_CTYPE="ja_JP.UTF-8"
LC_NUMERIC="ja_JP.UTF-8"
LC_TIME="ja_JP.UTF-8"
LC_COLLATE="ja_JP.UTF-8"
LC_MONETARY="ja_JP.UTF-8"
LC_MESSAGES="ja_JP.UTF-8"
LC_PAPER="ja_JP.UTF-8"
LC_NAME="ja_JP.UTF-8"
LC_ADDRESS="ja_JP.UTF-8"
LC_TELEPHONE="ja_JP.UTF-8"
LC_MEASUREMENT="ja_JP.UTF-8"
LC_IDENTIFICATION="ja_JP.UTF-8"
LC_ALL=
X11設定
$ set -o noclobber # 念のため
$ echo 'export DISPLAY=localhost:0.0' >> ~/.bashrc
$ source ~/.bashrc
XWindow動作確認
$ xeyes &

PhpStormのインストール

準備

PhpStormダウンロードページでLinux版を選択。
「DOWNLOAD」ボタンを押す。
次のページにでてくる「direct link」のアドレスをコピーしておく。
(ダウンロード自体は停止)

例:https://download.jetbrains.com/webide/PhpStorm-2018.1.4.tar.gz

WSL上でダウンロード

適当なディレクトリにダウンロードする。

$ cd
$ wget https://download.jetbrains.com/webide/PhpStorm-2018.1.4.tar.gz

/optに展開する

$ sudo tar xvf PhpStorm-2018.1.4.tar.gz -C /opt/
$ cd /opt/PhpStorm-181.5087.24
インストーラーを実行
$ /opt/PhpStorm-181.5087.24/bin/phpstorm.sh &

普通にPhpStormのインストーラーが起動するので、
Windowsに入れるようにインストールする。


------------------- ↓ 後書はここから ↓-------------------

普通にインストーラーを実行すると以下のエラーが出る。

$ sudo /opt/PhpStorm-181.5087.24/bin/phpstorm.sh

Start Failed: Internal error. Please report to http://jb.gg/ide/critical-startup-errors

com.intellij.ide.plugins.PluginManager$StartupAbortedException: java.lang.reflect.InvocationTargetException
        at com.intellij.ide.plugins.PluginManager.a(PluginManager.java:80)
        at java.lang.Thread.run(Thread.java:745)
Caused by: java.lang.reflect.InvocationTargetException
        at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
        at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
        at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
        at java.lang.reflect.Method.invoke(Method.java:498)
        at com.intellij.ide.plugins.PluginManager.a(PluginManager.java:77)
        ... 1 more
Caused by: java.lang.UnsatisfiedLinkError: /opt/PhpStorm-181.5087.24/jre64/lib/amd64/libawt_xawt.so: libXtst.so.6: cannot open shared object file: No such file or directory
        at java.lang.ClassLoader$NativeLibrary.load(Native Method)
        at java.lang.ClassLoader.loadLibrary0(ClassLoader.java:1941)
        at java.lang.ClassLoader.loadLibrary(ClassLoader.java:1824)
        at java.lang.Runtime.load0(Runtime.java:809)
        at java.lang.System.load(System.java:1086)
        at java.lang.ClassLoader$NativeLibrary.load(Native Method)
        at java.lang.ClassLoader.loadLibrary0(ClassLoader.java:1941)
        at java.lang.ClassLoader.loadLibrary(ClassLoader.java:1845)
        at java.lang.Runtime.loadLibrary0(Runtime.java:870)
        at java.lang.System.loadLibrary(System.java:1122)
        at java.awt.Toolkit$3.run(Toolkit.java:1636)
        at java.awt.Toolkit$3.run(Toolkit.java:1634)
        at java.security.AccessController.doPrivileged(Native Method)
        at java.awt.Toolkit.loadLibraries(Toolkit.java:1633)
        at java.awt.Toolkit.<clinit>(Toolkit.java:1673)
        at com.intellij.ui.AppUIUtil.updateFrameClass(AppUIUtil.java:154)
        at com.intellij.idea.StartupUtil.prepareAndStart(StartupUtil.java:89)
        at com.intellij.idea.MainImpl.a(MainImpl.java)
        at com.intellij.idea.MainImpl.start(MainImpl.java:41)
        ... 6 more


Also, an UI exception occurred on attempt to show above message:
java.lang.NoClassDefFoundError: Could not initialize class java.awt.Toolkit
        at java.awt.Component.<clinit>(Component.java:597)
        at com.intellij.idea.Main.showMessage(Main.java:174)
        at com.intellij.idea.Main.showMessage(Main.java:150)
        at com.intellij.ide.plugins.PluginManager.processException(PluginManager.java:147)
        at com.intellij.ide.plugins.PluginManager$1.uncaughtException(PluginManager.java:65)
        at java.lang.Thread.dispatchUncaughtException(Thread.java:1956)

libxtst6がインストールされていないのが原因。

$ sudo apt-get install libxtst6