実現したいこと
CentOS6の環境 で VSCode公式 の RemoteDevelopment を 使いたいです。
https://marketplace.visualstudio.com/items?itemName=ms-vscode-remote.vscode-remote-extensionpack
CentOS6 で RemoteDevelopment を使うには、
glibc >= 2.17, libstdc++ >= 3.4.18 が必要みたいです。
https://code.visualstudio.com/docs/remote/linux#_updating-glibc-and-libstdc-on-rhel-centos-6
公式では rpm で glibc, libstdc をアップデートする方法を紹介しているみたいで、
しかし、他のアプリケーションが依存するライブラリを更新するから注意してと書いています。
(rpm -Uh --force --nodeps ...)
rpm で 既存のパッケージをアップデートしたり、
競合させたりせずにインストールする方法はあるのでしょうか。
(rpm -ivh --prefix=./work とか --relocate ./work で 上手くいかず一旦断念しました)
手動で glibc, libstdc をビルド, コンパイルする参考サイトも紹介しています。
https://serverkurma.com/linux/how-to-update-glibc-newer-version-on-centos-6-x/
前提
新しくパッケージを入れる許可は得ており、sudo権限等もあるものとします。
しかし、元から入ってるパッケージ等がアップデートをきっかけに動かなくなってはいけません。
例えば、/lib/libc.so.6 のシンボリックを張り替えたりすると、
何か意図しないことが起こりそうで怖いです。
手動してビルドする前の状態
VSCode経由でのSSH接続は成功しているようだが、
「Could not establish connection to <hostname>」と表示され、
glibc, libstdc が足りていないメッセージが ~/.vscode-server/.<id?>.log に出ています
[<username>@<hostname> ~]$ cat ~/.vscode-server/.91899dcef7b8110878ea59626991a18c8a6a1b3e.log /home/<username>/.vscode-server/bin/91899dcef7b8110878ea59626991a18c8a6a1b3e/node: /usr/lib64/libstdc++.so.6: version `GLIBCXX_3.4.14' not found (required by /home/<username>/.vscode-server/bin/91899dcef7b8110878ea59626991a18c8a6a1b3e/node) /home/<username>/.vscode-server/bin/91899dcef7b8110878ea59626991a18c8a6a1b3e/node: /usr/lib64/libstdc++.so.6: version `GLIBCXX_3.4.18' not found (required by /home/<username>/.vscode-server/bin/91899dcef7b8110878ea59626991a18c8a6a1b3e/node) /home/<username>/.vscode-server/bin/91899dcef7b8110878ea59626991a18c8a6a1b3e/node: /usr/lib64/libstdc++.so.6: version `CXXABI_1.3.5' not found (required by /home/<username>/.vscode-server/bin/91899dcef7b8110878ea59626991a18c8a6a1b3e/node) /home/<username>/.vscode-server/bin/91899dcef7b8110878ea59626991a18c8a6a1b3e/node: /usr/lib64/libstdc++.so.6: version `GLIBCXX_3.4.15' not found (required by /home/<username>/.vscode-server/bin/91899dcef7b8110878ea59626991a18c8a6a1b3e/node) /home/<username>/.vscode-server/bin/91899dcef7b8110878ea59626991a18c8a6a1b3e/node: /lib64/libc.so.6: version `GLIBC_2.17' not found (required by /home/<username>/.vscode-server/bin/91899dcef7b8110878ea59626991a18c8a6a1b3e/node) /home/<username>/.vscode-server/bin/91899dcef7b8110878ea59626991a18c8a6a1b3e/node: /lib64/libc.so.6: version `GLIBC_2.16' not found (required by /home/<username>/.vscode-server/bin/91899dcef7b8110878ea59626991a18c8a6a1b3e/node) /home/<username>/.vscode-server/bin/91899dcef7b8110878ea59626991a18c8a6a1b3e/node: /lib64/libc.so.6: version `GLIBC_2.14' not found (required by /home/<username>/.vscode-server/bin/91899dcef7b8110878ea59626991a18c8a6a1b3e/node)
試してみたこと
glibc 2.17 を 手動でビルドして入れて、
export LD_LIBRARY_PATH=/opt/glibc-2.17/lib
を .bashrc に記述しましたが、VSCodeでSSHした際に、
手動でビルドして入れたサイト同じエラーがでました。
/home/<username>/.vscode-server/bin/91899dcef7b8110878ea59626991a18c8a6a1b3e/node: /lib64/libc.so.6: version 'GLIBC_2.17' not found (required by /home/<username>/.vscode-server/bin/91899dcef7b8110878ea59626991a18c8a6a1b3e/node)`
↑については、~/.bashrcに記述しても、VSCode経由のSSHでは
LD_LIBRARY_PATH を読み込めていないのかもしれません。
/etc/profile とかで export すればよいのかもしれませんが、
個人の設定ファイルで完結させたいです。
あるいは、普段使いでsshするときは LD_LIBRARY_PATH を空のままにして
SSH接続時のみ export させれば最高です。
config とかは 下記のようなイメージです。
# hooost Host hooost Hostname xxx.xxx.xxx.xxx User userrr IdentityFile C:\Users\userrr.ssh\adm_rsa Command??? export LD_LIBRARY_PATH=/opt/glibc-2.17/lib
glibc については、下記のようにインストールしました。
# glibc 2.17 があるがチェック strings /lib64/libc.so.6 | grep GLIBC | grep 2.17 strings /lib64/libc.so.6 | grep GLIBC # GLIBC_2.17 ... なかった # 作業フォルダ作成 mkdir -p ~/src/local/ cd ~/src/ # ダウンロード, 解凍, ビルド用フォルダ作成 wget http://ftp.gnu.org/gnu/glibc/glibc-2.17.tar.gz tar -zxvf glibc-2.17.tar.gz cd glibc-2.17/ mkdir build cd build/ # ビルド, コンパイル (real: 10m57.126s かかった) ls -al /opt/{,glibc-2.17/} ../configure --prefix=/opt/glibc-2.17 touch /opt/test && (rm -f /opt/test ; make install) || sudo make install # シンボリックリンク を 作成するか # ln -sf /opt/glibc-2.17/glibc-2.17.so /lib/libc.so.6. # LD_LIBRARY_PATH変数 を エクスポートしておく echo -e "\nexport LD_LIBRARY_PATH=/opt/glibc-2.17/lib" >> ~/.bashrc exec $SHELL -l echo $LD_LIBRARY_PATH
libstdc++ を手動でビルドする手順はまだ調べているところです。
恐らく、glibc と同じような方法でできると思うのですが、
もし、glibcと同様に、LD_LIBRARY_PATH(同じ変数名)を設定するのであれば、
できないのかなと思ったりしています。
まとめ
・rpm で 既存の環境に影響を与えずにインストールは可能か
・VSCodeでSSHしたときに、glibc 2.17 を見つけさせるには どうすればいいか
・あるいはもっとスマートな方法でVSCodeのRemoteDevelopment(=SSH)を利用する方法はあるか
CentOS6で利用したい人結構いると思うのですが、日本語の情報など見つけられなくて、
何か1つでもご存知の方、助言ください、よろしくお願いします。
回答2件
あなたの回答
tips
プレビュー