为什么 chromium-browser 63 比 62 大这么多?

为什么 chromium-browser 63 比 62 大这么多?

我注意到apt估计升级需要48.1MB62.0.3202.94-0ubuntu0.16.04.1317从 升级到会占用更多空间63.0.3239.84-0ubuntu0.16.04.1。我浏览了一下apt changelog chromium-browser,没有看到任何占用更多空间的内容。有没有快速查看文件变化的方法,apt或者有谁知道或能找到原因?

$ apt list --upgradable
chromium-browser/xenial-updates,xenial-security 63.0.3239.84-0ubuntu0.16.04.1 amd64 [upgradable from: 62.0.3202.94-0ubuntu0.16.04.1317]
chromium-codecs-ffmpeg-extra/xenial-updates,xenial-security 63.0.3239.84-0ubuntu0.16.04.1 amd64 [upgradable from: 62.0.3202.94-0ubuntu0.16.04.1317]
$ sudo apt dist-upgrade
The following packages will be upgraded:
chromium-browser chromium-codecs-ffmpeg-extra
2 upgraded, 0 newly installed, 0 to remove and 0 not upgraded.
Need to get 74.4 MB of archives.
After this operation, 48.1 MB of additional disk space will be used.

答案1

大小差异似乎来自一个新的v8_context_snapshot_generator二进制文件。我提取了 debs 的内容并进行了比较:

$ ls -sSh 6*/usr/lib/chromium-browser
61/usr/lib/chromium-browser:
total 222M
132M chromium-browser      5.0M libGLESv2.so                1.5M libVkLayer_unique_objects.so        1.1M chrome_200_percent.pak    220K natives_blob.bin       4.0K WidevineCdm            4.0K v8_build_config.json
 14M resources.pak     3.0M gn                  1.5M libVkLayer_swapchain.so         784K libVkLayer_threading.so   152K mus_app_resources_200.pak  4.0K angledata             0 libs
 13M ui.service        2.9M test_ime_driver.service         1.4M keyboard_resources.pak          772K chrome_100_percent.pak    128K views_mus_resources.pak    4.0K locales
9.8M icudtl.dat        2.6M libVkLayer_core_validation.so       1.2M brotli                  576K libwidevinecdmadapter.so   92K mus_app_resources_100.pak  4.0K plugins
9.0M headless_lib.pak      1.9M libVkLayer_parameter_validation.so  1.2M flatc                   508K libEGL.so          40K xdg-mime           4.0K swiftshader
6.7M font_service.service  1.6M libVkLayer_object_tracker.so        1.2M proto_zero_plugin           508K libwidevinecdm.so      36K xdg-settings           4.0K mus_app_resources_strings.pak
6.6M toolchain.ninja       1.5M snapshot_blob.bin           1.1M transport_security_state_generator  472K character_data_generator   16K chrome-sandbox         4.0K args.gn

63/usr/lib/chromium-browser:
total 270M
134M chromium-browser           3.0M test_ime_driver.service         1.2M snapshot_blob.bin           504K libEGL.so               44K chrome_100_percent.pak.info         4.0K WidevineCdm
 44M v8_context_snapshot_generator  2.7M libVkLayer_core_validation.so       1.2M brotli                  492K libwidevinecdm.so           44K chrome_200_percent.pak.info         4.0K angledata
 14M resources.pak          2.6M gn                  1.2M proto_zero_plugin           472K character_data_generator    40K xdg-mime                4.0K locales
 13M ui.service             1.9M libVkLayer_parameter_validation.so  1.2M flatc                   212K natives_blob.bin        36K views_mus_resources.pak.info        4.0K plugins
9.8M icudtl.dat             1.6M v8_context_snapshot.bin         1.1M transport_security_state_generator  188K headless_lib.pak.info       36K xdg-settings                4.0K swiftshader
9.1M headless_lib.pak           1.6M libVkLayer_object_tracker.so        1.1M chrome_200_percent.pak          156K resources.pak.info          16K chrome-sandbox              4.0K mus_app_resources_strings.pak
7.3M toolchain.ninja            1.5M libVkLayer_unique_objects.so        792K chrome_100_percent.pak          128K mus_app_resources_200.pak   12K mus_app_resources_strings.pak.info  4.0K args.gn
6.5M font_service.service       1.5M libVkLayer_swapchain.so         776K libVkLayer_threading.so         112K views_mus_resources.pak     12K mus_app_resources_100.pak.info      4.0K v8_build_config.json
5.3M libGLESv2.so           1.4M keyboard_resources.pak          576K libwidevinecdmadapter.so         72K mus_app_resources_100.pak   12K mus_app_resources_200.pak.info         0 libs

$ file 63/usr/lib/chromium-browser/v8_*
63/usr/lib/chromium-browser/v8_build_config.json:          ASCII text, with no line terminators
63/usr/lib/chromium-browser/v8_context_snapshot.bin:       data
63/usr/lib/chromium-browser/v8_context_snapshot_generator: ELF 64-bit LSB executable, x86-64, version 1 (SYSV), dynamically linked, interpreter /lib64/ld-linux-x86-64.so.2, for GNU/Linux 2.6.32, BuildID[sha1]=99a63c90180ec5a32ea8861d44f405942ccbbdab, stripped

这似乎是一个旨在加速创建 V8 上下文的新工具。V8 是 Chromium 使用的 JavaScript 引擎,创建新的 V8 上下文占了网页加载时间的很大一部分。设计文档表明从 V8 上下文快照创建上下文应可将速度提高 3 倍,而这首先是一个用于创建快照的辅助程序。

但是,阅读设计文档建议将该工具包含在包中可能是一个意外,因此是一个包装错误:

如何创建快照?

快照是在构建时创建的。这意味着快照与用户无关。
我们制作一个在主机端平台上运行的可执行文件来制作快照。它模拟 LocalWindowProxy::Initialize() 的行为来创建 v8::Context,并输出 blob 文件作为结果。

和:

担忧

  • 此功能会使 Android 上的 APK 大小增加 1.6MB。它可能大到足以取消胜利。
    • Android 没有扩展
    • 此功能可以增加磁盘 I/O 和内存使用量。

这意味着它将v8_context_snapshot_generator在软件包构建时运行,而不是在单个用户系统上运行。而 Android 预计的相对较小的体积增长表明它不包含 44 MB 的工具。

相关内容