LoginSignup
19
14

More than 5 years have passed since last update.

CentOS7で良さげなCode Serverを試したらエラーが出た ("Error: /lib64/libstdc++.so.6: version `GLIBCXX_3.4.21' not found 等)

Last updated at Posted at 2019-03-08

code-server

https://github.com/codercom/code-server
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

完全大勝利

ここでやっと
yattaze.png
やったぜ!

19
14
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
19
14