しばらくの間、PAR:Packer (pp) を使用して Windows 用のバイナリを作成しています。それらは常に当然のことながら大きく (約 6-8MB) ありましたが、最近パッケージを更新し (Windows で stawberry perl を使用しています)、現在はほぼ 20MB のバイナリを生成しています! 必要なすべてのモジュールを備えた perl 環境全体が含まれていることは理解していますが、手に負えなくなってきており、19 MB の単純なスクリプトを誰かに渡すのは少し恥ずかしいです! とにかくバイナリサイズを減らす方法はありますか? 過去数回のリリースまたは PAR Packer でサイズが増加した理由を知っている人はいますか?
2 に答える
Perl 環境に新しいモジュールをインストールする (または一部のみをアップグレードする) と、スクリプトで使用されていない場合でも、時間の経過とともにppに多くの追加ファイルが含まれます。ppは、何を含めるかに関して厳密よりも安全であるため、多くの役に立たない依存関係を拾います。
秘訣は、2 つのPerl 環境を使用することです。1 つは開発用で、もう 1 つはバイナリのビルド専用です。ビルド環境の場合、Perl の新規インストールから開始し、PAR::Packer とアプリケーションに必要なモジュールのみをインストールします。
私のビルド環境では、わずか 5 Mb の Tk バイナリを生成できます。同じマシン上にある私の開発環境 (CPAN からのがらくたがたくさんある) では、同じスクリプトは 13 Mb です。
What difference does it make? IMHO, I wouldn't be concerned with size, only with performance
PAR doesn't hide anything from you, you wantIf you're curious to know which files get packed, if they're stripped of pod, etc etc, all you have to do is look inside unzip -d foo foo.exe
FWIW, AFAIK, the size hasn't changed, so you must be using lots and lots of modules.
- Typical no-module-print-print-pl yields about 1.6M
- Load Moose/Tk and you're at about 5.1M
- Load Gtk2/Glib/Pango/Cairo/threads and you're at about 9.7M