ディストリビューションを超えてバイナリを動作させる「CDE」
CDEは環境をパッケージングし、共通バイナリを異なるディストリビューションで動作させる。
[/s2If]
CDEはLinux向けのオープンソース・ソフトウェア。Linuxではソースをダウンロードし、コンパイルして実行するのが当たり前になっている。ディストリビューション、サーバごとに環境が異なるのでそれをconfigureやmakeを通じて吸収する訳だ。
Mac OSXでは無理でした…
同様にRubyやPython、PHP、Perlといったスクリプト言語ではコードを実行エンジンによって個々のOS間の誤差を吸収して実行する。この誤差を吸収し、異なるLinuxディストリビューション間でも同じバイナリを動作させるのがCDEだ。
CDEの仕組みはシンプルではある。バイナリを動作させるのに必要なライブラリを取り揃えてしまうのだ。バイナリそのものを実行するとエラーになるが、CDEを通して実行することで必要なライブラリを読み込んで実行する。デモ動画ではUbuntu上でコンパイルしたバイナリがKnoppix上で動作する。
ファイル構造
もちろん全てのバイナリが動作する訳ではない。だがコードをコンパイルする手間なく異なる環境でも同じバイナリが動作するというのは試みとしてユニークだ。Linuxのバイナリが動作する仕組みを知る上でも興味深い。
[s2If !current_user_can(access_s2member_level1)]
MOONGIFTは読者の皆さまのサポートによって運営されています。ぜひプレミアム登録お願いします!月 額500円の他、半年(3,000円)、年間パック(6,000円)もあります。!
[/s2If]
CDE: automatic packaging of Code, Data, and Environment from PGPGPG on Vimeo.
MOONGIFTはこう見る
オープンソースではないバイナリ配布のシステムにおいて、ディストリビューションごとの誤差を吸収するというのは工数がかかる作業かも知れない。そのような場合に必要なライブラリを全てつけて配布するというやり方は興味深いかも知れない(ライセンスが気になるが)。
たったHello Worldを出力するプログラムを書いてもCDEを使うと多数のライブラリを読み込むのに驚くかも知れない。Linuxの勉強用としても使えそうだ。
CDE: automatic packaging of Code, Data, and Environment
http://www.stanford.edu/~pgbovine/cde.html
[/s2If]
pgbovine’s CDE at master - GitHub