在 Debian 上“打包 Flutter”通常有两种含义,需要先区分一下:
下面分别说明。
sudo apt update
sudo apt install -y build-essential dpkg-dev clang cmake \
ninja-build pkg-config libgtk-3-dev liblzma-dev
flutter config --enable-linux-desktop
flutter build linux --release
构建产物在:
build/linux/x64/release/bundle/
myapp/
├── DEBIAN/
│ └── control
├── usr/
│ ├── bin/myapp
│ ├── lib/myapp/
│ └── share/applications/myapp.desktop
DEBIAN/control 示例:
Package: myapp
Version: 1.0.0
Section: utils
Priority: optional
Architecture: amd64
Depends: libgtk-3-0, libgl1, libx11-6
Maintainer: you <you@example.com>
Description: My Flutter Linux App
A simple Flutter application packaged for Debian.
mkdir -p myapp/usr/lib/myapp
cp -r build/linux/x64/release/bundle/* myapp/usr/lib/myapp/
mkdir -p myapp/usr/bin
cat > myapp/usr/bin/myapp <<'EOF'
#!/bin/bash
exec /usr/lib/myapp/myapp "$@"
EOF
chmod +x myapp/usr/bin/myapp
usr/share/applications/myapp.desktop
[Desktop Entry]
Name=MyApp
Exec=myapp
Type=Application
Categories=Utility;
dpkg-deb --build myapp
生成:
myapp.deb
dh 方式打包(更“Debian 风格”)适合发布到仓库或 PPA:
sudo apt install dh-make
dh_make --createorig
修改 debian/rules,在 override_dh_auto_build 中调用:
flutter build linux --release
这种方式更复杂,但更符合 Debian 打包规范。
一般不推荐,因为:
如果必须:
dh-make 创建包/opt/flutterPATH 中软链ldd build/linux/x64/release/bundle/myapp
缺什么装什么。
确保:
dpkg --print-architecture
与 control 中一致。
如果你愿意,可以告诉我:
我可以给你一份可直接用的打包脚本。