在 CentOS 上制作 AppImage 文件,核心思路是:
把你的程序 + 依赖库 + 一个 AppRun 启动脚本 + 桌面文件,打包成一个可执行的 .AppImage 文件。
下面给你一个从零开始、可在 CentOS 7/8 上操作的完整流程。
sudo yum install -y git wget fuse
CentOS 8 用
dnf代替yum
如果是 CentOS 8+ / Stream,还需要:
sudo dnf install -y fuse3
wget https://github.com/linuxdeploy/linuxdeploy/releases/download/continuous/linuxdeploy-x86_64.AppImage
chmod +x linuxdeploy-x86_64.AppImage
git clone https://github.com/AppImage/AppImageKit.git
cd AppImageKit
./build.sh
假设你的程序叫 myapp:
mkdir -p myapp.AppDir/usr/bin
cp myapp myapp.AppDir/usr/bin/
目录结构示例:
myapp.AppDir/
├── AppRun
├── myapp.desktop
├── myapp.png
└── usr/
└── bin/
└── myapp
nano myapp.AppDir/AppRun
内容:
#!/bin/bash
HERE="$(dirname "$(readlink -f "${0}")")"
exec "$HERE/usr/bin/myapp" "$@"
赋予执行权限:
chmod +x myapp.AppDir/AppRun
nano myapp.AppDir/myapp.desktop
内容:
[Desktop Entry]
Name=MyApp
Exec=myapp
Icon=myapp
Type=Application
Categories=Utility;
cp myapp.png myapp.AppDir/
./linuxdeploy-x86_64.AppImage \
--appdir myapp.AppDir \
--output appimage
成功后你会得到:
MyApp-x86_64.AppImage
chmod +x MyApp-x86_64.AppImage
./MyApp-x86_64.AppImage
ldd myapp
用:
linuxdeploy --appdir myapp.AppDir --deploy-deps-only /path/to/lib
./xxx.AppImage --appimage-extract
然后运行 squashfs-root/AppRun
CentOS 制作 AppImage = 准备 AppDir + AppRun + desktop + linuxdeploy 打包
如果你是 Qt / GTK / Python / Go / Electron 程序,我可以给你对应专属打包示例。