2011-09-14 1 views
2

J'apprends actuellement à créer des versions erlang et à mettre à niveau des mises à niveau à l'aide de barres d'armature. Merci à this tutorial J'étais déjà capable de générer des versions et des mises à niveau, mais un problème est apparu à ce sujet.Réduction de la taille des packages de mise à niveau générés par les barres d'armature

Dans un projet que je travaille, il est important que les mises à jour de version sont aussi petits que possible, car ils sont téléchargés via une connexion peu fiable et lente dans un dispositif embarqué (par exemple beagleboard)

Malheureusement, le goudron Les archives .gz générées par rebar contiennent toujours une version complète, avec toutes les applications. Je me demandais s'il y avait une méthode pour faire une mise à jour de la version de travail qui ne contiendrait que de nouvelles applications et des applications mises à jour pour réduire la taille des archives. Peut-être qu'il est possible de configurer reltool pour le faire?

Merci pour votre aide.

Répondre

0

J'ai écrit un petit guide sur la question comme part of Learn You Some Erlang's releases chapter:

est ici l'un des fichiers de presenté pour rendre les choses plus petites:

{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}]} 
]}. 

Ce des bandes informations de débogage, rend les fichiers d'applications aussi petit Si possible, supprime les fichiers de test, exclut autant d'applications que possible, etc. Notez que vous devez au moins inclure SASL et conserver debug_info si vous souhaitez que les personnes puissent exécuter des mises à niveau de code en direct de votre matériel.

Dans l'ensemble, l'ERTS lui-même prend 18,5 Mo. Si vous utilisez les règles ci-dessus, la majeure partie de votre espace sera occupée. Vous devez donc vérifier si vous pouvez supprimer des exécutables (non-SMP Erlang, etc.) de la liste.

Questions connexes