在 Ubuntu 上制作 AppImage 包,核心思路是:
把程序 + 依赖一起打包成一个可执行文件,并加上 AppImage 运行时。下面按常见场景给你一个完整、可操作的流程。
sudo apt update
sudo apt install -y \
build-essential \
cmake \
git \
wget \
fuse \
libfuse2
⚠️ Ubuntu 22.04+ 默认没有
libfuse2,AppImage 运行/测试时需要它。
linuxdeploy(推荐 ✅)假设你已经有一个可执行文件:
MyApp/
├── usr/
│ ├── bin/
│ │ └── myapp
│ └── share/
│ └── icons/
│ └── myapp.png
├── myapp.desktop
myapp.desktop 示例:
[Desktop Entry]
Name=MyApp
Exec=myapp
Icon=myapp
Type=Application
Categories=Utility;
wget https://github.com/linuxdeploy/linuxdeploy/releases/download/continuous/linuxdeploy-x86_64.AppImage
chmod +x linuxdeploy-x86_64.AppImage
./linuxdeploy-x86_64.AppImage \
--appdir AppDir \
-e usr/bin/myapp \
-i usr/share/icons/myapp.png \
-d myapp.desktop
执行后你会得到:
AppDir/
├── usr/
├── AppRun -> usr/bin/myapp
├── myapp.desktop
└── usr/share/icons/myapp.png
./linuxdeploy-x86_64.AppImage \
--appdir AppDir \
--output appimage
✅ 最终生成:
MyApp-x86_64.AppImage
测试:
chmod +x MyApp-x86_64.AppImage
./MyApp-x86_64.AppImage
apt install linuxdeploy qtdeploy
linuxdeploy \
--appdir AppDir \
-e myapp \
--plugin qt
npm install -g @electron/packager
electron-packager . MyApp --platform=linux --arch=x64
然后:
linuxdeploy \
--appdir AppDir \
-e MyApp-linux-x64/MyApp
wget https://github.com/AppImage/AppImageKit/releases/download/continuous/runtime-x86_64
mksquashfs AppDir appimage.squashfs -root-owned -noappend
cat runtime-x86_64 appimage.squashfs > MyApp.AppImage
chmod +x MyApp.AppImage
⚠️ 不推荐新手使用,容易踩依赖坑。
sudo apt install libfuse2
ldd myapp
然后用:
linuxdeploy --appdir AppDir -e myapp
它会自动复制依赖。
确保:
.desktop 中 Icon= 没有后缀usr/share/icons/| 工具 | 用途 |
|---|---|
| linuxdeploy | ✅ 最常用 |
| AppImageKit | 底层工具 |
| appimagetool | 老工具 |
| pkg2appimage | 把 deb 转 AppImage |
Ubuntu 制作 AppImage = 准备程序 + 构造 AppDir + linuxdeploy 打包
如果你愿意,可以告诉我:
我可以给你 针对你项目的完整打包示例。