在 CentOS 下打包 AppImage,通常有两种常见场景:
下面给你一套通用、可落地的步骤(以 CentOS 7/8 为例)。
sudo yum install -y wget fuse file
推荐使用 linuxdeploy 或 appimagetool
wget https://github.com/linuxdeploy/linuxdeploy/releases/download/continuous/linuxdeploy-x86_64.AppImage
chmod +x linuxdeploy-x86_64.AppImage
wget https://github.com/AppImage/AppImageKit/releases/download/continuous/appimagetool-x86_64.AppImage
chmod +x appimagetool-x86_64.AppImage
AppImage 的核心是 AppDir
MyApp.AppDir/
├── AppRun
├── myapp.desktop
├── myapp.png
└── usr/
├── bin/
│ └── myapp
└── lib/
└── (依赖库)
mkdir -p MyApp.AppDir/usr/bin
cp myapp MyApp.AppDir/usr/bin/
cat > MyApp.AppDir/AppRun <<'EOF'
#!/bin/bash
HERE="$(dirname "$(readlink -f "${0}")")"
exec "$HERE/usr/bin/myapp" "$@"
EOF
chmod +x MyApp.AppDir/AppRun
cat > MyApp.AppDir/myapp.desktop <<'EOF'
[Desktop Entry]
Name=MyApp
Exec=myapp
Icon=myapp
Type=Application
Categories=Utility;
EOF
cp myapp.png MyApp.AppDir/
在 CentOS 上手动找依赖很容易漏,推荐:
./linuxdeploy-x86_64.AppImage \
--appdir MyApp.AppDir \
--output appimage
它会自动:
.so 库如果你只用 appimagetool:
./appimagetool-x86_64.AppImage MyApp.AppDir
生成:
MyApp-x86_64.AppImage
CentOS 7 的 glibc 较老:
ldd --version
✅ 建议:
运行 AppImage 时报:
fuse: device not found
解决:
sudo modprobe fuse
# 或
./xxx.AppImage --appimage-extract
./linuxdeploy-x86_64.AppImage \
--appdir MyApp.AppDir \
--desktop-file MyApp.AppDir/myapp.desktop \
--icon-file MyApp.AppDir/myapp.png \
--output appimage
| 问题 | 解决 |
|---|---|
| 运行没反应 | AppRun 没加执行权限 |
| 缺少库 | linuxdeploy 未扫描到 |
| CentOS 8 打包 CentOS 7 跑不了 | glibc 不兼容 |
| 图标不显示 | desktop 中 Icon 名必须一致 |
如果你愿意,可以告诉我:
我可以直接给你针对性的打包脚本。