2011-09-14 7 views
2

現在、鉄筋を使用してerlangのリリースとリリースのアップグレード方法を学習しています。 this tutorialのおかげで、私は既にリリースとアップグレードを生成することができましたが、この間に1つの問題が発生しました。私が働いているプロジェクトで鉄筋で生成されたアップグレードパッケージのサイズを小さくする

、彼らが組み込みデバイス(例えばのBeagleBoard)に信頼性がないと、低速接続を介してダウンロードされるため、リリースのアップグレードは、できるだけ小さいことが重要である

残念ながら、タール鉄筋によって生成された.gzアーカイブには、常にフルリリースが含まれ、すべてのアプリケーションが含まれます。アーカイブサイズを減らすために新しいアプリケーションと更新されたアプリケーションだけを含む作業リリースをアップグレードする方法があるかどうか疑問に思っていました。おそらくreltoolを設定することは可能でしょうか?

ありがとうございました。

答えて

0

私はpart of Learn You Some Erlang's releases chapterとして問題に小さなガイドを書いている:

はここで物事を小さくするために提示リリースファイルの一つです:

{sys, [ 
{lib_dirs, ["/home/ferd/code/learn-you-some-erlang/release/"]}, 
{erts, [{mod_cond, derived}, 
     {app_file, strip}]}, 
{rel, "erlcount", "1.0.0", [kernel, stdlib, ppool, erlcount]}, 
{boot_rel, "erlcount"}, 
{relocatable, true}, 
{profile, embedded}, 
{app_file, strip}, 
{debug_info, strip}, 
{incl_cond, exclude}, 
{excl_app_filters, ["_tests.beam$"]}, 
{app, stdlib, [{mod_cond, derived}, {incl_cond, include}]}, 
{app, kernel, [{incl_cond, include}]}, 
{app, ppool, [{vsn, "1.0.0"}, {incl_cond, include}]}, 
{app, erlcount, [{vsn, "1.0.0"}, {incl_cond, include}]} 
]}. 

これは、デバッグ情報を取り除き、小さなとしてアプリのファイルを作ります可能な限り多くのアプリケーションを除外します。少なくとも、SASLをインクルードして、人があなたのマテリアルのライブコードのアップグレードを実行できるようにするには、debug_infoを保持する必要があります。

ERTS自体は18.5MB必要です。上記のルールを使用すると、ほとんどのスペースが必要になるため、実行ファイル(非SMP Erlangなど)をリストから削除できるかどうかをチェックする必要があります。