code-server
https://github.com/codercom/code-server
サーバ上でvisual studio codeが使えるというもの。
やっぱ聞いたら使いたくなったので、さっそく試してみました。
参考にしつつ、より新しいリリースがあったのでそっちを使った。
curl -fsSL https://github.com/codercom/code-server/releases/download/1.31.1-100/code-server-1.31.1-100-linux-x64.tar.gz | tar zx
cd code-server-1.31.1-100-linux-x64/
./code-server ~
すると以下のエラーが出現
INFO Starting shared process [1/5]...
ERROR SHARED stderr {"data":"Error: /lib64/libstdc++.so.6: version `GLIBCXX_3.4.21' not found
以下略
orz
GLIBCXX_3.4.21
要するに、このライブラリがいないためにエラーが出ていたようです。
で、こいつが何なのかというとgccのなかにあるライブラリらしいのですが、centOSでデフォルトで入っているgccはバージョンが古いらしく、このライブラリの件のバージョンがなかったようです。
つまり、やることは単純で、gccの最新版を入手すれば良いのです。ただ、これが大変だった。gccをビルドします。
gccをビルドする
これまた、ほぼ参考ページどおりにやりました。
まずgccをダウンロードします。僕の時は現在(2019/3/9)の最新リリースは8.3.0でしたが、以下のリンク先で調べて、最新のものをできるだけ入れましょう。
http://ftp.tsukuba.wide.ad.jp/software/gcc/releases/
以下のコードの2行目はチェックサムを見るためのもので、ダウンロードエラーがないかを確認するのに使います。
# 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
gcc-8.3.0.tar.gz: OK
と出ればOK
ダウンロードの正常が確認できたらいよいよビルドします。ここの説明は参考ページをご参照ください。makeつまりビルドには相当時間がかかりました。
# 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
できたら確認をしましょう。
僕の環境はシェルがtcshだったのでrehashする必要がありました。bash等の方は必要ないはずです。
$ rehash
$ gcc --version
gcc (GCC) 8.3.0
Copyright (C) 2018 Free Software Foundation, Inc.
This is free software; see the source for copying conditions. There is NO
warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
$which gcc
/usr/local/bin/gcc #前のは/bin/gccにあった
最後に共有ライブラリの参照設定を書き換えます。
# cd /etc/ld.so.conf.d
# echo /usr/local/lib64 >> usr_local_lib64.conf
# mv /usr/local/lib64/libstdc++.so.6.0.25-gdb.py /usr/local/lib64/back_libstdc++.so.6.0.25-gdb.py
# ldconfig
まだ問題があった
これでライブラリ回りはエラーを吐かなくなったが、まだ問題があるようで…
ERROR SHARED stderr {"data":"Uncaught Exception: Error: ENOENT: no such file or directory, open '{hoge_dir}/.code-server/Backups/workspaces.json
が発生しました。そこでここを参考に、ダミーでエラー元のjsonを作成
$ mkdir ~/.code-server/Backups
$ vim ~/.code-server/Backups/workspaces.json
# {"rootWorkspaces":[],"folderURIWorkspaces":[],"emptyWorkspaceInfos":[],"emptyWorkspaces":[]}
# と書き込む
すると、次はこのエラーが発生。ワーキングディレクトリがないってことだろうか?
ERROR SHARED stderr {"data":"Uncaught Exception: Error: ENOENT: no such file or directory, scandir '{home_dir}/.code-server/User/workspaceStorage
これまたさっきのを参考にして
$ mkdir -p ~/.code-server/User/workspaceStorage