温馨提示×

Ubuntu如何制作AppImage包

小樊
42
2026-08-27 06:02:09
栏目: 智能运维

在 Ubuntu 上制作 AppImage 包,核心思路是:
把程序 + 依赖 + AppDir 结构 + AppRun 入口 + 桌面文件打包成一个可执行文件

下面给你一个从零到可运行 AppImage 的完整流程,适用于大多数 Linux 程序(二进制、脚本、Qt/GTK 程序等)。


一、准备环境(Ubuntu)

sudo apt update
sudo apt install -y \
  build-essential \
  wget \
  fuse \
  file \
  desktop-file-utils

二、理解 AppImage 的基本结构

一个 AppImage 本质上是一个 AppDir 目录,结构如下:

MyApp.AppDir/
├── AppRun              # 启动脚本(必须)
├── myapp               # 可执行程序
├── usr/
│   ├── bin/
│   ├── lib/
│   └── share/
├── myapp.desktop       # 桌面文件(必须)
└── myapp.png           # 图标(必须)

三、示例:为一个简单程序制作 AppImage

1️⃣ 创建 AppDir

mkdir -p MyApp.AppDir/usr/bin

2️⃣ 放入你的程序

假设你的程序是 myapp

cp myapp MyApp.AppDir/usr/bin/
chmod +x MyApp.AppDir/usr/bin/myapp

如果是脚本:

cp run.sh MyApp.AppDir/usr/bin/myapp

3️⃣ 创建 AppRun(启动入口)

nano MyApp.AppDir/AppRun

内容示例:

#!/bin/bash
HERE="$(dirname "$(readlink -f "${0}")")"
exec "$HERE/usr/bin/myapp" "$@"

赋予执行权限:

chmod +x MyApp.AppDir/AppRun

4️⃣ 创建 .desktop 文件

nano MyApp.AppDir/myapp.desktop
[Desktop Entry]
Name=MyApp
Exec=AppRun
Icon=myapp
Type=Application
Categories=Utility;

5️⃣ 放入图标

cp myapp.png MyApp.AppDir/

四、使用 appimagetool 打包

1️⃣ 下载 appimagetool

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

2️⃣ 打包 AppImage

./appimagetool-x86_64.AppImage MyApp.AppDir

成功后会生成:

MyApp-x86_64.AppImage

3️⃣ 测试运行

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

✅ 如果程序能跑,说明制作成功。


五、依赖问题(非常重要)

✅ 推荐做法(避免依赖地狱)

  • 在较老 Ubuntu 上编译
    • 例如:Ubuntu 18.04 / 20.04
  • 使用:
    • 静态链接
    • 或把 .so 放进 AppDir/usr/lib

❌ 常见错误

问题 原因
libc.so.6 版本错误 编译环境太新
缺少 libstdc++.so 没打包依赖
无法启动 AppRun 路径错误

六、进阶:使用 linuxdeploy(强烈推荐)

安装

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

自动生成 AppDir

./linuxdeploy-x86_64.AppImage \
  --executable myapp \
  --desktop-file myapp.desktop \
  --icon-file myapp.png \
  --output appimage

✅ 自动处理依赖、desktop、AppRun


七、适用场景总结

程序类型 是否适合
二进制程序
Python / Shell 脚本
Qt / GTK GUI
内核模块
systemd 服务

八、常见问题

Q1:AppImage 能在所有 Linux 运行吗?

✅ 只要满足 glibc 兼容性

Q2:需要安装才能运行吗?

❌ 不需要,直接运行

Q3:AppImage 能自动更新吗?

✅ 可配合 AppImageUpdate


九、参考资源

  • 官方文档:https://docs.appimage.org
  • AppImageKit:https://github.com/AppImage/AppImageKit
  • linuxdeploy:https://github.com/linuxdeploy/linuxdeploy

如果你愿意,我也可以:

  • ✅ 帮你适配 Qt / Python / Electron
  • ✅ 帮你分析已有程序能否打包
  • ✅ 写一个完全自动化脚本

直接告诉我你是 什么程序(语言 / 框架 / 编译方式)即可。

0