访问群晖官方档案库,根据目标设备的CPU架构(如x86_64、arm64)和DSM版本(如DSM 7.x)下载对应工具链(如gcc_850_glibc229_x86_64-GPL.txz)。
1、解压工具链至开发机(Linux推荐),设置环境变量:
bash
export PATH=/path/to/toolchain/bin:$PATH
2、SPK打包工具
安装必要依赖:tar、gzip、openssl(用于签名)。
获取官方打包脚本模板:DSM SDK GitHub(含pkgscripts目录)https://github.com/SynologyOpenSource/pkgscripts-ng
一个标准SPK包含以下文件:
MyPackage.spk
├── INFO # 核心配置文件(必需)
├── scripts/ # 安装/升级/卸载脚本
│ ├── preinst
│ ├── postinst
│ └── preremove
├── package.tgz # 主程序文件(压缩包)
├── conf/ # 配置文件(可选)
├── icon.png # 套件图标(72x72像素)
└── LICENSE # 许可协议文本
3、创建核心配置文件(INFO)
INFO文件字段说明(官方文档):
字段 | 示例 | 值说明 |
---|---|---|
package | MyApp | 套件唯一ID(字母数字+下划线) |
version | 1.0.0-0001 | 格式:主版本.次版本.修订版-构建号 |
arch | x86_64 | 支持的CPU架构(多架构用逗号分隔,如x86_64 aarch64) |
firmware | 7.0-40000 | 最低支持的DSM版本 |
displayname | 我的应用 | 套件中心显示名称 |
description | 功能描述... | 简短说明(<100字符) |
maintainer | name@example.com | 维护者联系信息 |
distributor | 公司名 | 发行方名称 |
package="MyApp"
version="1.0.0-0001"
arch="x86_64"
firmware="7.0-40000"
displayname="我的应用"
description="这是一个示例套件"
maintainer="dev@synology.com"
distributor="Synology"
***关键要求:所有字段值禁止包含空格和特殊符号(除-、.、_外)
4、构建脚本与程序包 preinst:安装前检查(如依赖、冲突)。
postinst:安装后配置(创建用户、启动服务)。
preremove:卸载前清理(停止服务、删除文件)。
脚本需用Bash编写,首行加#!/bin/bash。
示例postinst片段(启动服务):
bash
# 创建服务用户
synouser --add myapp_user 0 "" 0 "Service User"
# 启动服务
/var/packages/MyApp/scripts/start.sh
打包主程序
将编译好的二进制、资源文件放入目录(如target/)。
压缩为package.tgz:
bash
tar czf package.tgz -C target/ .
6、SPK打包与签名 生成SPK文件
bash
tar cf MyApp.spk INFO package.tgz scripts/ conf/ icon.png
数字签名(官方分发必需)
使用群晖开发者账户获取签名证书:
bash
openssl dgst -sha1 -sign developer.key MyApp.spk > signature
tar --append --file=MyApp.spk signature
多架构支持
为不同CPU编译二进制(如ARMv8、x64),在INFO中声明arch="x86_64 aarch64"。
打包时按架构生成多个SPK2。
依赖管理
在INFO中声明依赖:
ini:install_dep_packages="Python3>=3.8" 或在preinst中检查:
bash
if ! synopkg status Python3 | grep "version"; then
echo "Python3未安装" >&2
exit 1
fi
服务集成
创建Systemd服务文件(路径:conf/myapp.service):
ini
[Unit]
Description=MyApp Service
After=network.target
[Service]
User=myapp_user
ExecStart=/var/packages/MyApp/bin/main
安装开发工具链
下载工具链:
访问群晖官方档案库,选择匹配CPU架构(如x86_64或armv8)和DSM版本(如7.2)的工具链包(示例:gcc_850_glibc229_x86_64-GPL.txz)1。
配置环境变量(Linux开发机):
bash
tar -xJf gcc_850_glibc229_x86_64-GPL.txz
export PATH=/path/to/toolchain/bin:$PATH
# 1. 更新系统并添加PPA
sudo apt update
sudo apt install -y software-properties-common
sudo add-apt-repository ppa:deadsnakes/ppa -y
sudo apt update
# 2. 安装所有依赖
sudo apt install -y build-essential git tar gzip openssl \
python3.8 python3.8-dev python3.8-venv
# 3. 设置Python3.8为默认python3
sudo update-alternatives --install /usr/bin/python3 python3 /usr/bin/python3.8 1
# 4. 安装pip
curl https://bootstrap.pypa.io/get-pip.py -o get-pip.py
sudo python3.8 get-pip.py
# 5. 验证环境
python3 --version # 应为3.8.x
完成 Python 安装后,继续执行之前的工具链安装:
# 下载工具链
wget https://archive.synology.com/download/ToolChain/toolchain/7.2-7.2.0.1/gcc850_glibc229_x86_64-GPL.txz
# 解压到系统目录
sudo mkdir -p /usr/local/syno-toolchain
sudo tar -xJf gcc850_glibc229_x86_64-GPL.txz -C /usr/local/syno-toolchain
# 设置环境变量
echo 'export PATH="/usr/local/syno-toolchain/bin:$PATH"' >> ~/.bashrc
echo 'export CC="x86_64-pc-linux-gnu-gcc"' >> ~/.bashrc
source ~/.bashrc
暂无评论