私は以前他のアプリケーションでこれを見たことがありますが、今夜はmysqlでこれを見つけました。
$ sudo apt install mysql-server
[...]
0 upgraded, 8 newly installed, 0 to remove and 0 not upgraded.
Need to get 18.7 MB of archives.
After this operation, 161 MB of additional disk space will be used.
圧縮では違いを説明できません。そうですか?
答え1
mariadb-client-10.1
、このコマンドがインストールするパッケージの1つ、5,704kiBです(amd64から)。設置されたサイズは45,347kiBで、サイズの約8倍で、18.7/161比とほぼ一致しています。
ファイルを抽出し、そのファイルのソースを見てみましょう。
$ ar x mariadb-client-10.1_10.1.26-0+deb9u1_amd64.deb
$ tar xJf data.tar.xz
$ du -shc usr/bin usr/share etc
45M usr/bin
200K usr/share
20K etc
45M total
したがって、パッケージが公開されたサイズに非常に近いように抽出されることがわかります。私たちがしたことは標準的な抽出ツールを使っただけで、特別なことはapt
起こりませんでした。
もう少し詳しく見てみましょう。
$ du -s usr/bin/mariabackup
18M usr/bin/mariabackup
$ xz < usr/bin/mariabackup|wc -c
4542540
だから私たちは見ることができます単一ファイルパッケージサイズの3倍のサイズで、特別な努力なしにパッケージよりも小さいサイズに圧縮できます。他の圧縮ははるかに良いです。圧縮tarファイルは、複数のインクルードファイルの追加の冗長性を利用できます。
はい。圧縮はほとんどどこでも違いを説明できます。
答え2
それはみんな圧縮されるまで。例を見るmariadb-server-10.1
パッケージ76,605kBファイルが含まれていますが、amd64
5,208.2kBに圧縮されています...
xz
ここで使用されている圧縮はタールボール全体のものであるため、ファイル間の冗長性を使用して全体のサイズを縮小できることに注意してください。パッケージに提供される多くのバイナリには共通部分があります。 〜のようにマイケル・ホーマー~の回答単一のバイナリファイルもうまく圧縮できることを示しています。
一方、設置前の寸法を表示するために使用される情報は次のとおりです。「インストールサイズ」フィールドパッケージをビルドするときに測定されるパッケージメタデータは、パッケージコンテンツの実際のサイズをよく表すと同時に、ダウンロードしたアーカイブのサイズも表示します。インストールサイズは、インストール中に使用される一時ディスク容量を考慮せず、パッケージに含まれるファイルのサイズのみを反映します。