JavaScript でのシングルページアプリケーション構築の商用フレームワークである Ext JS は Visual Studio Code や Eclipse などの IDE で開発できますが、ビジュアル開発環境である Sencha Architect を使えばコンポーネントをドラッグ&ドロップして画面デザインを見たままに作ることができます。
そして Sencha Architect は Windows, macOS, Linux のいずれでも利用できますが、Linuxの場合はディストリビューションによってlibc++.so.6のバージョンが異なるために、そのままではSencha Architectが実行できない場合があります。
その一つがCentOS7なのですが、この記事ではSencha Architectを動かすためにライブラリをソースからビルドして、動く環境を作ってみることにします。
必要な作業
- OpenJDK 1.8 をインストールしておきましょう。
- inotify の設定も変えておきます。
- Sencha Architect が参照する libc++.so.6 は CentOS7 標準のバージョンよりも新しいため、ソースからビルドします。
OpenJDK 1.8 のインストール
これは特に難しいことはありませんので説明は省略します。
# yum install java
inotify の設定を変える
Sencha Architectはプロジェクトを保存するごとにバックグラウンドでビルドツールが自動的に実行されますが、Linuxではファイルの変更をinotifyで検知しています。しかし CentOS7 のデフォルトでは inotify の max_user_watches が下記のように 8192 と少々少なめに設定されています。
$ cat /proc/sys/fs/inotify/max_user_watches
8192
そこで root 権限で以下のように実行して inotify の上限を増やすことにします。
# echo 100000 > /proc/sys/fs/inotify/max_user_watches
ただしこのコマンドは現在のOSに対する一時的な設定変更にすぎないので、永続的に有効化するために下記のように設定しておきます。
fs.inotify.max_user_watches=100000
libc++.so.6 の新しいバージョンを使うために gcc をソースからビルドする
libc++.so.6 は gcc に含まれるため、gcc をビルドします。この作業の説明はそれだけで記事が一つ書けてしまいますが、Qiitaに類似の記事がありましたので、そちらのリンクを提示いたします。
この作業を行っていない場合は上記記事で紹介されているような GLIBCXX のミスマッチにより Sencha Architect が実行できないのです。
なお、この記事の手順を抜粋し、またビルドに必要な rpm パッケージのインストールを行う手順を追加したものがこちらです。
# yum install gmp-devel mpfr-devel libmpc-devel glibc-devel.x86_64 glibc-devel.i686
# yum install gcc gcc-c++
# curl -LO http://ftp.tsukuba.wide.ad.jp/software/gcc/releases/gcc-8.3.0/gcc-8.3.0.tar.gz
# curl -LO http://ftp.tsukuba.wide.ad.jp/software/gcc/releases/gcc-8.3.0/sha512.sum
# sha512sum --check sha512.sum
# tar xzfv gcc-8.3.0.tar.gz -C /usr/local/src
# cd /usr/local/src/gcc-8.3.0/
# ./contrib/download_prerequisites
# mkdir build
# cd build
# ../configure --enable-languages=c,c++ --prefix=/usr/local --disable-bootstrap --disable-multilib
# make
# make install
gcc のビルドはそれなりに時間がかかる作業なので、ビルドを仕掛けてランチに出かけるとか帰宅するとよいでしょう。
ビルドした libc++.so.6 を使って Sencha Architect を起動する
ソースからビルドした libc++.so.6 は Sencha Architect 実行時だけ参照すればよいので、とりあえず、LD_LIBRARY_PATH の設定により一時的に参照できるようにします。
$ LD_LIBRARY_PATH=/usr/local/lib64
$ export LD_LIBRARY_PATH
Sencha Architect をインストールして実行する
ここまでの準備ができていれば、Sencha Architect をインストールして実行してみてください。インストールそのものは特に難しい点はないので省略します。
インストールした Sencha Architect は LD_LIBRARY_PATH を設定したシェルから次のように実行して起動します。
$ sencha/Sencha\ Architect\ 4.2/SenchaArchitect
すると、Sencha Architect が無事起動しました。下記のスクリーンショットは CarListing のサンプルを開いた状態です。画面左上のアイコンを見るとCentOS7で動いていることが分かりますね。
では実際にブラウザでプレビューしてみましょう。画面左側の Firefox でプレビューしつつ、画面右側には Sencha Architect を配置しています。
RHEL8 系列ならこういう環境構築を行わずともSencha Architectを実行できまるはずですが、RHEL7/CentOS7 系列でSencha Architectを利用しなければならない場合はこういう方法で対応できます。