温馨提示×

如何制作Ubuntu的AppImage

小樊
35
2026-07-31 16:26:02
栏目: 智能运维

制作 Ubuntu 的 AppImage 本质是把可执行程序 + 依赖库 + 运行环境打包成一个单文件、可移植、免安装的程序。下面按从入门到进阶给你一个完整流程。


一、AppImage 是什么?

AppImage 是一种 Linux 下的通用打包格式,特点:

  • ✅ 一个文件运行(.AppImage
  • ✅ 不需要安装
  • ✅ 不依赖系统库(自带依赖)
  • ✅ 跨 Ubuntu / Debian / Arch / Fedora 等发行版

二、准备环境(Ubuntu)

sudo apt update
sudo apt install -y \
  build-essential \
  cmake \
  git \
  wget \
  fuse \
  patchelf

⚠️ Ubuntu 22.04+ 默认没有 fuse,但运行 AppImage 需要:

sudo apt install fuse3 libfuse2

三、最简单方式:用 AppImageTool

1️⃣ 下载 appimagetool

wget https://github.com/AppImage/AppImageKit/releases/download/continuous/appimagetool-x86_64.AppImage
chmod +x appimagetool-x86_64.AppImage
sudo mv appimagetool-x86_64.AppImage /usr/local/bin/appimagetool

2️⃣ 准备程序目录(关键)

假设你要打包一个叫 myapp 的程序:

MyApp.AppDir/
├── AppRun
├── myapp
├── myapp.desktop
└── myapp.png

✅ AppRun(启动脚本)

#!/bin/bash
DIR="$(dirname "$(readlink -f "$0")")"
exec "$DIR/myapp" "$@"
chmod +x MyApp.AppDir/AppRun

✅ myapp.desktop

[Desktop Entry]
Name=MyApp
Exec=myapp
Icon=myapp
Type=Application
Categories=Utility;

✅ 可执行程序

cp your_binary MyApp.AppDir/myapp
chmod +x MyApp.AppDir/myapp

✅ 图标

cp icon.png MyApp.AppDir/myapp.png

3️⃣ 打包成 AppImage

appimagetool MyApp.AppDir

成功后会得到:

MyApp-x86_64.AppImage

4️⃣ 运行测试

chmod +x MyApp-x86_64.AppImage
./MyApp-x86_64.AppImage

四、处理依赖(重点)

如果你的程序依赖动态库:

ldd myapp

✅ 推荐方式:linuxdeploy

wget https://github.com/linuxdeploy/linuxdeploy/releases/download/continuous/linuxdeploy-x86_64.AppImage
chmod +x linuxdeploy-x86_64.AppImage

自动收集依赖:

./linuxdeploy-x86_64.AppImage \
  --appdir MyApp.AppDir \
  --executable myapp \
  --desktop-file myapp.desktop \
  --icon-file myapp.png

然后再打包:

appimagetool MyApp.AppDir

这是最稳妥方法


五、Qt / GTK / Python 程序(常见场景)

✅ Qt 程序

  • 需要打包:
    • libQt5*.so
    • platforms/libqxcb.so
  • linuxdeploy 会自动处理 Qt 插件

✅ Python 程序(推荐方式)

python -m venv venv
pip install -r requirements.txt

再打包:

linuxdeploy \
  --appdir AppDir \
  --executable venv/bin/python \
  --custom-apprun script.sh

AppRun 中:

exec python main.py "$@"

六、进阶:检查 AppImage 是否规范

appimagetool --lint MyApp.AppDir

七、常见问题

❌ 运行提示 “FUSE not found”

sudo apt install fuse3 libfuse2

❌ 库找不到

  • ldd
  • linuxdeploy
  • 不要从系统 /usr/lib 手工复制

❌ Ubuntu 版本不兼容?

AppImage 向下兼容,只要:

  • 编译环境用 较老 Ubuntu(18.04 / 20.04)
  • 不要用太新的 glibc

八、推荐标准流程(总结)

官方推荐组合

linuxdeploy + appimagetool

✅ 适用:

  • C / C++
  • Qt
  • Python
  • Electron

如果你愿意,可以告诉我:

  • 你是什么程序(C++ / Python / Qt / 脚本)
  • Ubuntu 版本
  • 是否带 GUI

我可以直接给你专用打包脚本

0