在 Ubuntu 下对 AppImage 进行“瘦身”(减小体积),可以从打包阶段和已生成 AppImage两个角度来做。下面按实用程度整理。
常见误区是用 conda、venv、docker 直接整体打包。
✅ 推荐:
.so 和二进制linuxdeploy-x86_64.AppImage \
--appdir AppDir \
--output appimage
linuxdeploy 的排除规则编辑 .linuxdeploy.yml 或手动排除:
exclude:
- "*.a"
- "*.la"
- "*/gtk-doc/*"
- "*/locale/*"
- "*/examples/*"
在 AppDir 中手动清理:
rm -rf AppDir/usr/include
rm -rf AppDir/usr/share/doc
rm -rf AppDir/usr/share/man
rm -rf AppDir/usr/share/locale
find AppDir -type f -executable | xargs strip 2>/dev/null
可减小 20%–50% 体积。
upx 压缩二进制upx --best --lzma AppDir/usr/bin/yourapp
⚠ 注意:
./yourapp.AppImage --appimage-extract
会生成 squashfs-root/
cd squashfs-root
rm -rf usr/share/doc usr/share/man usr/include
find . -name "*.a" -delete
find . -name "*.la" -delete
appimagetool squashfs-root yourapp-mini.AppImage
runtime 精简版AppImageKit 新版新版 squashfs 压缩率更高:
appimagetool -n yourapp.AppImage
| 方案 | 特点 |
|---|---|
| 静态编译 | 无依赖 .so |
| musl + AppImage | 极小 |
| Flatpak / Snap | 不一定更小 |
| 便携式二进制 | 非 AppImage |
| 操作 | 减小比例 |
|---|---|
| 删 doc/man | 5–15% |
| strip | 20–50% |
| upx | 30–60% |
| 依赖精简 | 可达 70% |
linuxdeploy + strip + 删文档 + upx
一般可从 200MB → 40–60MB
如果你愿意,可以告诉我:
我可以直接给你针对性瘦身命令。