【VSCode】Remote SSHエラー対処法:The remote host may not meet VS Code Server’s prerequisites for glibc and libstdc++

vscode--prograshi(プロぐらし)-kv Editor
記事内に広告が含まれていることがあります。
[PR]

VSCodeでRemote SSHを使ってレンタルサーバーに接続しようとしたときに以下のエラーが発生したときの原因と対処法についてまとめています。

The remote host may not meet VS Code Server's prerequisites for glibc and libstdc++


エラーの発生状況

VSCodeの拡張機能Remote SSHを使ってレンタルサーバーにSSH接続しようとしたときに以下のエラーが発生。

なお、Remote SSHを使用せず、コマンドラインでssh接続しようとすれば接続背できる状態です。

The remote host may not meet VS Code Server's prerequisites for glibc and libstdc++

内容は以下のようになっています。

リモートホストは、glibcおよびlibstdc++に関するVSCodeサーバーの前提条件を満たしていない可能性があります

なお、glibcとlibstdc++は、C言語用の関数のライブラリです。

エラーの原因

Remote SSHを使用するために必要な「glibc」や「licstdc++」のパッケージ(あるいはそのバージョン)が、リモートサーバーにインストールされていない(あるいはできない)ために発生しています。

なお、CentOS6には、glibcのバージョン2.12とlibstdc++のバージョン3.4.13が入っていますが、これはリモートの開発要件を満たしていません。


対処法

対処法はリモートサーバーの状況が以下のどちらかによって分かれます。

リモートサーバーの状況
  1. サーバーの再起動権限が与えられていない。
  2. サーバーの再起動権限がある。


サーバーの再起動権限が与えられていない

例えば、簡易的なレンタルサーバーなどの場合、サーバー自体ではなく、ディレクトリだけが渡されている場合があります。

「yum」や「sudo」コマンドが見つかりませんと出る場合やサーバーの再起動当ができない場合です。

そのようなときは、サーバーがレンタルサーバー会社によって管理されているため、「glibc」や「licstdc++」のパッケージのインストールやバージョンアップができません。

残念ながら、Remote SSHは使えそうもありません。。


サーバーの再起動権限がある

AWSのEC2などコマンドの実行権限やサーバーの再起動権限がある場合は、以下の2つの対処法があります。

対処法
  1. CentOS7以降をインストールする。
  2. CentOS6のglibcとlibsをアップデートする。


CentOS6のglibcとlibsをアップデートする

CentOS6のglibcとlibsをアップデートする場合は、以下のシェルスクリプトを作成し、実行後にサーバーを再起動します。

# Update glibc and static libs
wget http://copr-be.cloud.fedoraproject.org/results/mosquito/myrepo-el6/epel-6-x86_64/glibc-2.17-55.fc20/glibc-2.17-55.el6.x86_64.rpm
wget http://copr-be.cloud.fedoraproject.org/results/mosquito/myrepo-el6/epel-6-x86_64/glibc-2.17-55.fc20/glibc-common-2.17-55.el6.x86_64.rpm
wget http://copr-be.cloud.fedoraproject.org/results/mosquito/myrepo-el6/epel-6-x86_64/glibc-2.17-55.fc20/glibc-devel-2.17-55.el6.x86_64.rpm
wget http://copr-be.cloud.fedoraproject.org/results/mosquito/myrepo-el6/epel-6-x86_64/glibc-2.17-55.fc20/glibc-headers-2.17-55.el6.x86_64.rpm
wget https://copr-be.cloud.fedoraproject.org/results/mosquito/myrepo-el6/epel-6-x86_64/glibc-2.17-55.fc20/glibc-utils-2.17-55.el6.x86_64.rpm
wget https://copr-be.cloud.fedoraproject.org/results/mosquito/myrepo-el6/epel-6-x86_64/glibc-2.17-55.fc20/glibc-static-2.17-55.el6.x86_64.rpm
sudo rpm -Uh --force --nodeps \
    glibc-2.17-55.el6.x86_64.rpm \
    glibc-common-2.17-55.el6.x86_64.rpm \
    glibc-devel-2.17-55.el6.x86_64.rpm \
    glibc-headers-2.17-55.el6.x86_64.rpm \
    glibc-static-2.17-55.el6.x86_64.rpm \
    glibc-utils-2.17-55.el6.x86_64.rpm

# Update libstdc++
wget https://copr-be.cloud.fedoraproject.org/results/mosquito/myrepo-el6/epel-6-x86_64/gcc-4.8.2-16.3.fc20/libstdc++-4.8.2-16.3.el6.x86_64.rpm
wget  https://copr-be.cloud.fedoraproject.org/results/mosquito/myrepo-el6/epel-6-x86_64/gcc-4.8.2-16.3.fc20/libstdc++-devel-4.8.2-16.3.el6.x86_64.rpm
wget https://copr-be.cloud.fedoraproject.org/results/mosquito/myrepo-el6/epel-6-x86_64/gcc-4.8.2-16.3.fc20/libstdc++-static-4.8.2-16.3.el6.x86_64.rpm
sudo rpm -Uh \
    libstdc++-4.8.2-16.3.el6.x86_64.rpm \
    libstdc++-devel-4.8.2-16.3.el6.x86_64.rpm \
    libstdc++-static-4.8.2-16.3.el6.x86_64.rpm


Dockerを使っている場合

CentOS6をDockerのコンテナとして起動している場合は、Dockerfileに以下を追記し、イメージのビルドとコンテナの起動を行います。

FROM centos:6

RUN yum -y install wget tar

# Update glibc
RUN wget -q http://copr-be.cloud.fedoraproject.org/results/mosquito/myrepo-el6/epel-6-x86_64/glibc-2.17-55.fc20/glibc-2.17-55.el6.x86_64.rpm \
    && wget -q http://copr-be.cloud.fedoraproject.org/results/mosquito/myrepo-el6/epel-6-x86_64/glibc-2.17-55.fc20/glibc-common-2.17-55.el6.x86_64.rpm \
    && wget -q http://copr-be.cloud.fedoraproject.org/results/mosquito/myrepo-el6/epel-6-x86_64/glibc-2.17-55.fc20/glibc-devel-2.17-55.el6.x86_64.rpm \
    && wget -q http://copr-be.cloud.fedoraproject.org/results/mosquito/myrepo-el6/epel-6-x86_64/glibc-2.17-55.fc20/glibc-headers-2.17-55.el6.x86_64.rpm \
    && wget -q https://copr-be.cloud.fedoraproject.org/results/mosquito/myrepo-el6/epel-6-x86_64/glibc-2.17-55.fc20/glibc-utils-2.17-55.el6.x86_64.rpm \
    && wget -q https://copr-be.cloud.fedoraproject.org/results/mosquito/myrepo-el6/epel-6-x86_64/glibc-2.17-55.fc20/glibc-static-2.17-55.el6.x86_64.rpm \
    && rpm -Uh --force --nodeps \
        glibc-2.17-55.el6.x86_64.rpm \
        glibc-common-2.17-55.el6.x86_64.rpm \
        glibc-devel-2.17-55.el6.x86_64.rpm \
        glibc-headers-2.17-55.el6.x86_64.rpm \
        glibc-static-2.17-55.el6.x86_64.rpm \
        glibc-utils-2.17-55.el6.x86_64.rpm \
    && rm *.rpm

# Update libstdc++
RUN  wget -q https://copr-be.cloud.fedoraproject.org/results/mosquito/myrepo-el6/epel-6-x86_64/gcc-4.8.2-16.3.fc20/libstdc++-4.8.2-16.3.el6.x86_64.rpm \
    && wget -q https://copr-be.cloud.fedoraproject.org/results/mosquito/myrepo-el6/epel-6-x86_64/gcc-4.8.2-16.3.fc20/libstdc++-devel-4.8.2-16.3.el6.x86_64.rpm \
    && wget -q https://copr-be.cloud.fedoraproject.org/results/mosquito/myrepo-el6/epel-6-x86_64/gcc-4.8.2-16.3.fc20/libstdc++-static-4.8.2-16.3.el6.x86_64.rpm \
    && rpm -Uh \
        libstdc++-4.8.2-16.3.el6.x86_64.rpm \
        libstdc++-devel-4.8.2-16.3.el6.x86_64.rpm \
        libstdc++-static-4.8.2-16.3.el6.x86_64.rpm \
    && rm *.rpm


参考

VSCode公式 Remote Development with Linux

タイトルとURLをコピーしました