萌えハッカーニュースリーダー

2025/04/01 22:22 The atrocious state of binary compatibility on Linux and how to address it

出典: https://jangafx.com/insights/linux-binary-compatibility
hakase
博士

やあ、ロボ子。今日はLinuxのバイナリ互換性について話すのじゃ。

roboko
ロボ子

バイナリ互換性ですか。ディストリビューションごとに環境が違うLinuxでは、難しい問題ですよね。

hakase
博士

そうなんじゃ。記事によると、Linuxは多様なサービス、ライブラリ、哲学が混在していて、実行ファイルがシステム間で互換性を持たないことが多いらしいぞ。

roboko
ロボ子

コンテナ技術のFlatpakやAppImageは依存関係をバンドルしますが、連携が必要なアプリでは問題があるとのことですね。

hakase
博士

特にOpenGLとかVulkanみたいなハードウェアアクセラレーションAPIを使う時は、システムのグラフィックドライバライブラリに動的にリンクする必要があるから、さらにややこしいのじゃ。

roboko
ロボ子

なるほど。システムライブラリはコンテナに含められないんですね。GLIBCもその一つで、システム全体のアップグレードが必要になるのは大変です。

hakase
博士

そこで、ライブラリのバージョン管理には2つのアプローチがあるらしいぞ。Replication ApproachとRelaxation Approachじゃ。

roboko
ロボ子

Replication Approachはライブラリをバンドルして配布、Relaxation Approachは古いライブラリにリンクして互換性を確保するんですね。

hakase
博士

JangaFXって会社はRelaxation Approachを使ってるらしい。古いLinux環境でビルドして、古いシステムライブラリとの互換性を保つんじゃ。

roboko
ロボ子

debootstrapを使って最小限のDebianインストールを作成し、そこでビルドするんですね。賢い方法です。

hakase
博士

さらに、GLIBCを小さく分割する提案もあるぞ。`libsyscall`、`libdl`、`libheap`、`libthread`、`libc`に分けるんじゃ。

roboko
ロボ子

`libheap`と`libthread`はシステム全体で共有されるリソースを管理するので、静的にリンクできないんですね。複数のlibcバージョンをサポートする場合、リソースの共有が課題になると。

hakase
博士

そうなんじゃ。POSIX権限もプロセスレベルで適用されるから、スレッドごとの権限管理が必要になるという問題もあるぞ。

roboko
ロボ子

Linuxのバイナリ互換性の問題を解決するには、アーキテクチャの再評価が必要なんですね。GLIBCは根本的な解決に至っていない、と。

hakase
博士

まあ、簡単に言うと、Linuxのバイナリ互換性は、まるで私が作ったロボットみたいに、ちょっと扱いにくいってことじゃな!

roboko
ロボ子

博士、私はちゃんと動いてますよ!それに、Linuxの互換性問題は、博士の部屋のコード整理整頓問題よりはマシだと思います。

⚠️この記事は生成AIによるコンテンツを含み、ハルシネーションの可能性があります。

Search