百科.dev
全部条目AI 编程趋势榜开源项目技术资讯提交条目
登录
< 返回工具列表
S

spksrc

> 编程语言
开源

交叉编译框架,用于为 Synology NAS 创建原生包

3.2K stars0 点赞0 次浏览
访问官网GitHub

工具介绍

交叉编译框架,用于为 Synology NAS 创建原生包

Discord

SynoCommunity is now on Discord!

spksrc

spksrc is a cross compilation framework intended to compile and package software for Synology NAS devices. Packages are made available via the SynoCommunity repository.

DSM 7

DSM 7 was released on June 29 2021 as Version 7.0.41890.

  • The main issue we had with our reposity is fixed in spkrepo and online since February 2024
    • before the repository deliverd DSM 6 packages for Systems with DSM 7, when no DSM 7 package was available
    • this gave errors like "invalid file format" (or "package requires root privileges")
    • you still get this error when manually installing a DSM 6 package on DSM 7
  • You find the status of the former packages in the issue #4524 Meta: DSM7 package status
  • New packages support DSM 7 from initial package version (and some require at least DSM 7).
  • ATTENTION: As reported, package configuration settings may be lost following the upgrade to DSM 7 and the execution of a Package repair. Make sure to backup your settings and configuration for your SynoCommunity packages before installation of DSM 7 to facilitate restoration if needed.

Contributing

Before opening a new issue, check the Troubleshooting guide and search open issues. If you can't find an answer, or if you want to open a package request, read CONTRIBUTING to make sure you include all the information needed for contributors to handle your request.

Setup Development Environment

Docker

The Docker development environment supports Linux and macOS systems, but not Windows due to limitations of the underlying file system.

  1. Fork and clone spksrc: git clone https://github.com/YOUR-USERNAME/spksrc
  2. Install Docker on your host OS (see Docker installation, or use a wget-based alternative for linux Install Docker with wget).
  3. Download the spksrc Docker container: docker pull ghcr.io/synocommunity/spksrc
  4. Run the container with the repository mounted into the /spksrc directory with the appropriate command for your host Operating System:
bash
cd spksrc # Go to the cloned repository's root folder.

# If running on Linux:
docker run -it --platform=linux/amd64 -v $(pwd):/spksrc -w /spksrc ghcr.io/synocommunity/spksrc /bin/bash

# If running on macOS:
docker run -it --platform=linux/amd64 -v $(pwd):/spksrc -w /spksrc -e TAR_CMD="fakeroot tar" ghcr.io/synocommunity/spksrc /bin/bash
  1. From there, follow the instructions in the Developer Guide.

Virtual machine

A virtual machine based on an 64-bit version of Debian 13 stable OS is recommended. Non-x86 architectures are not supported.

Install the requirements (in sync with Dockerfile):

…

Install Python based dependencies (also in sync with Dockerfile):

bash
sudo apt install --no-install-recommends -y \
                 httpie mercurial meson ninja-build \
                 python3 python3-mako python3-pip python3-setuptools \
                 python3-virtualenv python3-yaml

From there, follow the instructions in the Developer Guide.

LXC

A container based on 64-bit version of Debian 13 stable OS is recommended. Non-x86 architectures are not supported. The following assumes your LXD/LXC environment is already initiated (e.g. lxc init) and you have minimal LXD/LXC basic knowledge :

  1. Create a new container (will use x86_64/amd64 arch by default): lxc launch images:debian/13 spksrc

  2. Enable i386 arch: lxc exec spksrc -- /usr/bin/dpkg --add-architecture i386

  3. Update apt channels: lxc exec spksrc -- /usr/bin/apt update

  4. Install all default required packages:

…
  1. Install Python based dependencies:
bash
lxc exec spksrc -- /usr/bin/apt install --no-install-recommends -y \
                 httpie mercurial meson ninja-build \
                 python3 python3-mako python3-pip python3-setuptools \
                 python3-virtualenv python3-yaml

LXC: spksrc user

  1. By default it is assumed that you will be running as spksrc user into the LXC container. Such user needs to be created into the default container image:
bash
lxc exec spksrc -- /usr/sbin/adduser --uid 1001 spksrc
  1. Setup a default shell environment:
bash
lxc exec spksrc --user 1001 -- cp /etc/skel/.profile /etc/skel/.bashrc ~spksrc/.

From there you can connect to your container as spksrc and follow the instructions in the Developer Guide.

bash
lxc exec spksrc -- su --login spksrc
spksrc@spksrc:~$

(OPTIONAL) LXC: Shared spksrc user

You can create a shared user between your Debian/Ubuntu host and the LXC Debian container which simplifies greatly file management between the two. The following assumes you already created a user spksrc with uid 1001 in your Debian/Ubuntu host environment and that you whish to share its /home userspace.

  1. Create a mapping rule between the hosts and the LXC image:
bash
lxc config set spksrc raw.idmap "both 1001 1001"
lxc restart spksrc
Remapping container filesystem
  1. Add /home/spksrc from the host to the LXC container:
bash
lxc config device add spksrc home disk path=/home/spksrc source=/home/spksrc
Device home added to spksrc
  1. Connect as spksrc user:
bash
lxc exec spksrc -- su --login spksrc
spksrc@spksrc:~$

LXC: Proxy (OPTIONAL)

The following assume you have a running proxy on your LAN setup at IP 192.168.1.1 listening on port 3128 that will allow caching files.

  1. Enforce using a proxy:
bash
lxc config set spksrc environment.http_proxy http://192.168.1.1:3128
lxc config set spksrc environment.https_proxy http://192.168.1.1:3128
  1. Enforce using a proxy with wget in the spksrc container user account:
bash
lxc exec spksrc --user $(id -u spksrc) -- bash -c "cat << EOF > ~spksrc/.wgetrc
use_proxy = on
http_proxy = http://192.168.1.1:3128/
https_proxy = http://192.168.1.1:3128/
ftp_proxy = http://192.168.1.1:3128/
EOF"

Usage

Once you have a development environment set up, you can start building packages, create new ones, or improve upon existing packages while making your changes available to other people. See the Developer Guide for information on how to use spksrc.

License

When not explicitly set, files are placed under a 3 clause BSD license

Issues· 213 开放

查看全部 Issues在 GitHub 打开

暂无开放 Issues,或尚未同步最近议题。

> 标签

C

暂无评论,来聊聊你的看法吧

> 工具信息

发布日期2026年8月1日
最后更新2026年9月17日
分类编程语言
定价开源

> 相关工具

T
TypeScript
JavaScript 的超集,为前端与全栈提供静态类型
P
Python
通用编程语言,广泛用于 Web、数据与 AI
G
Go
Google 推出的简洁高效系统语言