2011-09-14 56 views
2

我目前正在學習如何使用鋼筋生成erlang版本和發佈升級。感謝this tutorial我已經能夠成功生成版本和升級,但在此期間出現了一個問題。縮小鋼筋生成的升級包的尺寸

在此,我工作的一個項目,它是非常重要的版本升級是儘可能小,因爲它們是通過不可靠的和緩慢的連接到嵌入式設備(例如BeagleBoard的)下載

不幸的是,焦油由rebar生成的.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等)。