【发布时间】:2021-11-17 23:37:36
【问题描述】:
我正在将我编写的应用程序打包到 AppImage 中,以便将其交付给 Linux 用户。
我使用的 GUI 工具包的一个关键特性是它小巧轻便,允许我编译一个静态链接到大约 6Mb 的 GUI 库的构建。
但是,在构建 AppImage 之后 - 我按照说明进行操作 - 使用所有功能(基本上只包括使用文件浏览器对话来加载文件) - 它会生成一个绝对巨大的 AppImage,大约 200Mb!
我知道 AppImages 应该是“一点点”大,但是当包含静态链接 GUI 工具包的本机编译二进制文件只有 6Mb 时,作为可移植性的提议解决方案,这完全是疯狂的。
但是,我完全不相信我需要全部 200Mb。一个非常与我相似的软件,但是另外使用Qt(相比之下相当臃肿)只有大约30Mb。我实际上怀疑 appimage-builder 做错了什么 - 我认为它列出了我在使用文件浏览器对话框作为依赖项时探索的目录中的文件(它们是大文件)。我没有其他真正的解释。但如果是这样,我该如何阻止它这样做呢?
为什么我的那么大?我该怎么办?
为了记录,我正在使用这种方法来构建我的 AppImage
- 单独构建我的二进制文件
- 运行
appimage-builder --generate并填写表单 - 正在运行
appimage-builder --recipe AppImageBuilder.yml --skip-tests
编辑:删除明显不需要的正在打包的文件已将 appimage 的大小减小到仅 140Mb,但这仍然比我见过的同等 appimage 大近 5 倍。是否有一些我不知道的技巧/选项?
【问题讨论】:
-
您是否考虑过查看 appimage 中的文件并查看哪些文件会影响大小?
-
好的,所以我通过安装它来看看。它当然包括一堆我想的非依赖文件,但它们大约是 20Mb,而不是 200Mb。问题是这个过程使得这么多子目录很难看出所有的重量来自哪里
-
我也不清楚程序是什么。 AppDir 文件甚至大于 200Mb,因此其中不包含任何内容。清单看起来很谦虚。它真的很奇怪。当然,它不应该包含恰好在后台的文件。
-
您可以使用
du | sort -n按大小查看最大的目录,或使用ncdu以交互方式浏览它们 -
好的,我已经做到了。没有什么比单独大约 3Mb 更大。它们中有很多,我想问题是我不确定哪些是必不可少的,哪些不是以及我将如何指定在构建它的清单中包含什么(这相对简单)。或者我可以直接从 AppDir 构建图像,而不是从清单?
标签: linux portability appimage