温馨提示×

怎样制作ubuntu appimage

小樊
49
2026-09-02 02:18:50
栏目: 智能运维

在 Ubuntu 上制作 AppImage 通常有两种常见方式:

  1. 手动打包(适合简单程序)
  2. 使用工具自动打包(推荐,如 linuxdeploy / appimage-builder)

下面从「原理 → 手动方式 → 工具方式」一步步说明。


一、AppImage 基本原理

AppImage 本质上是一个 可执行的压缩文件系统(squashfs),结构如下:

yourapp.AppImage
├── AppDir/
│   ├── AppRun
│   ├── yourapp.desktop
│   ├── yourapp.png
│   └── usr/
│       ├── bin/yourapp
│       └── lib/...

运行 AppImage 时:

  • 自动挂载
  • 执行 AppRun
  • 程序在沙箱式环境中运行

二、手动制作 AppImage(适合了解原理)

1️⃣ 准备程序

假设你有一个可执行文件:

mkdir -p MyApp/AppDir/usr/bin
cp yourapp MyApp/AppDir/usr/bin/

2️⃣ 创建桌面文件

MyApp/AppDir/yourapp.desktop

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

3️⃣ 添加图标

cp yourapp.png MyApp/AppDir/

4️⃣ 创建 AppRun

MyApp/AppDir/AppRun

#!/bin/bash
HERE="$(dirname "$(readlink -f "${0}")")"
exec "$HERE/usr/bin/yourapp" "$@"
chmod +x MyApp/AppDir/AppRun

5️⃣ 下载 appimagetool

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

6️⃣ 打包

./appimagetool-x86_64.AppImage MyApp/AppDir MyApp.AppImage

✅ 生成 MyApp.AppImage


三、使用 linuxdeploy(推荐)

1️⃣ 安装依赖

sudo apt install libfuse2

2️⃣ 下载 linuxdeploy

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

3️⃣ 打包(自动找依赖)

./linuxdeploy-x86_64.AppImage \
  --appdir AppDir \
  --executable yourapp \
  --desktop-file yourapp.desktop \
  --icon-file yourapp.png \
  --output appimage

✅ 自动生成 .AppImage


四、使用 appimage-builder(现代方式,支持复杂依赖)

适合 Python / Qt / GTK 程序

pip install appimage-builder

生成配置

appimage-builder --generate

编辑 AppImageBuilder.yml 后:

appimage-builder --build

五、常见注意事项

✅ 程序必须是 Linux 可执行文件
✅ 依赖库要一起打包(linuxdeploy 会自动处理)
✅ Ubuntu 22.04+ 需要 libfuse2
✅ 不要依赖系统全局路径


六、适合场景建议

场景 推荐方式
单个二进制 手动
C/C++ 程序 linuxdeploy
Python / Qt appimage-builder
商业发布 appimage-builder

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

  • 你的程序语言(C / Python / Go / Qt)
  • 是否使用 GUI
  • Ubuntu 版本

我可以直接给你 可复制的完整打包命令。

0 踩