0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

vscode 1.99から古いLinuxに接続する

Posted at

vscodeを1.99以降にアップデートすると古いLinuxにRemote SSHやRemote Containerでアクセス出来なくなってしまいました。

回避策も書いてあるのですがどうも分かりにくい。
どうやら仕組みとしては下記のようです。

  • Remote SSHやRemote Containerは接続先のマシンにvscode serverを起動させる
  • 1.99以降はvscode serverがglibc 2.28など新しいライブラリを要求するようになった
  • glibcは動的リンクされるので、接続先マシンにglibcの新しいバージョンが入っている必要がある
  • 通常、動的リンクはシステムの固定のパスからライブラリを探すため、古いLinuxでは必要なバージョンが見つけられずエラーになる

上記の公式ページに書いてある回避策は、

  • VSCODE_SERVER_PATCHELF_PATH という環境変数で patchelfというツールのパスを指定する
  • patchelf は動的リンクする際のライブラリを探すパスを実行ファイルを書き換えることで変更する機能を持ってる
  • 事前に crosstool-ngというツールを使ってvscode serverが必要とする新しいglibcなどをビルドして用意しておく
  • patchelfがvscode serverを書き換えて新しいglibcを探しに行くようにしてくれるので動作できる

仕組みは理解したが、色々面倒なので、vscode 1.99 から接続できる Ubuntu 16と18のDocker imageを作りました。

ghcr.io/naitaku/old-linux-vscode:ubuntu-16.04
という名前でdockerやDockerfileから参照できるので、これをベースにイメージを作ればvscodeから接続できるイメージが作れます。

0
0
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
0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?