Skip to main content

打包与校验

Deb 包文件名命名规范:

  • 单包模式:<appid>_<version>_<arch>.deb
    • 示例:myapp_1.0.0_amd64.deb
  • 数据包:<appid>_<version>_all.deb
    • 示例:myapp_1.0.0_all.deb
  • 压缩包:<appid>_<platform>.tar.gz(双包模式包含两个 .deb 文件)
    • 示例:weather_x86_64.tar.gz(即 应用ID_平台.tar.gz
    • 命名规则:config.ini.id_config.ini.platform.tar.gz

Lintian 校验要求:

  • 所有 Error (E) 级别问题必须在提交前修复
  • Warning (W) 级别问题应审查;平台关键警告必须修复
  • Info (I) 级别问题为信息性,可选处理
  • 仅对已记录、有意的偏差使用 lintian --suppress-tags=<tag>

双包压缩包结构: .tar.gz 压缩包必须具有以下结构:

<appid>_<platform>.tar.gz
├── <appid>.deb # 应用数据包(建议与 config.ini.id 保持一致)
└── <package>.deb # deb源包(名称默认即可,无需修改)

压缩包根目录不得包含子目录 — .deb 文件必须位于压缩包根级别。

说明:

  • <appid>.deb:deb数据包,通过当前包可以在应用中心对包进行展示操作等
  • <package>.deb:deb源包,用于完成deb服务功能

方式一:单包模式

步骤1:构建 Deb 包

dpkg-deb --build ./<应用根目录> ./<appid>_<version>_amd64.deb

步骤2:校验包

dpkg-deb -c <appid>_<version>_amd64.deb
dpkg-deb -I <appid>_<version>_amd64.deb
lintian <appid>_<version>_amd64.deb # 如有 lintian

步骤3:生成校验和

sha256sum <appid>_<version>_amd64.deb > <appid>_<version>_amd64.deb.sha256

步骤4:测试安装

sudo dpkg -i <appid>_<version>_amd64.deb
sudo systemctl status <system_id>
sudo dpkg --purge <appid> # 卸载

方式二:双包模式

步骤1:构建deb源包

dpkg-deb --build ./<应用根目录> ./<package>.deb

步骤2:构建deb数据包

mkdir -p /tmp/<appid>/DEBIAN
mkdir -p /tmp/<appid>/usr/local/<appid>

# 复制 TOS 7.0 配置文件到数据包
cp config.ini /tmp/<appid>/usr/local/<appid>/
cp <appid>.lang /tmp/<appid>/usr/local/<appid>/
cp -r images /tmp/<appid>/usr/local/<appid>/
# 如果是外部打开,还需复制 nginx 配置
cp -r nginx /tmp/<appid>/usr/local/<appid>/ 2>/dev/null || true

# 创建 DEBIAN/control(参见 8.13.2)
# ...

# 构建数据包
dpkg-deb --build /tmp/<appid> ./<appid>.deb

步骤3:打包提交压缩文件

tar -czf <appid>_<platform>.tar.gz <appid>.deb <package>.deb

步骤4:校验、校验和、测试安装

# 校验
dpkg-deb -c <package>.deb && dpkg-deb -I <package>.deb
dpkg-deb -c <appid>.deb && dpkg-deb -I <appid>.deb

# 校验和
sha256sum <appid>_<platform>.tar.gz > <appid>_<platform>.tar.gz.sha256

# 测试安装
sudo dpkg -i <package>.deb
sudo dpkg -i <appid>.deb
sudo systemctl status <system_id>