Qiita Teams that are logged in
You are not logged in to any team

Log in to Qiita Team
Community
OrganizationEventAdvent CalendarQiitadon (β)
Service
Qiita JobsQiita ZineQiita Blog
14
Help us understand the problem. What is going on with this article?

More than 1 year has passed since last update.

@IntenF

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

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
やったぜ!

14
Help us understand the problem. What is going on with this article?
Why not register and get more from Qiita?
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away
14
Help us understand the problem. What is going on with this article?