Discord
SynoCommunity 现已加入 Discord!
spksrc
spksrc 是一个交叉编译框架,旨在为 Synology NAS 设备编译和打包软件。软件包通过 SynoCommunity 仓库 提供。
DSM 7
DSM 7 于 2021 年 6 月 29 日作为版本 7.0.41890 发布。
- 我们仓库存在的主要问题已在 spkrepo 中修复,并自 2024 年 2 月起在线可用
- 在修复之前,当没有可用的 DSM 7 软件包时,仓库会为运行 DSM 7 的系统提供 DSM 6 软件包
- 这会导致诸如“无效文件格式”(或“软件包需要 root 权限”)之类的错误
- 在 DSM 7 上手动安装 DSM 6 软件包时,您仍会遇到此错误
- 您可以在问题 #4524 Meta: DSM7 软件包状态 中查看旧软件包的状态
- 新软件包从初始软件包版本开始支持 DSM 7(某些软件包要求至少为 DSM 7)。
- 注意:据报告,升级到 DSM 7 并执行软件包修复后,软件包配置设置可能会丢失。请在安装 DSM 7 之前备份您的 SynoCommunity 软件包的设置和配置,以便在需要时进行恢复。
贡献
在打开新问题之前,请查阅 故障排除指南 并搜索未解决的问题。 如果您找不到答案,或者想要提出软件包请求,请阅读 CONTRIBUTING 以确保您包含贡献者处理您的请求所需的所有信息。
设置开发环境
Docker
Docker 开发环境支持 Linux 和 macOS 系统,但由于底层文件系统的限制,不支持 Windows。
- Fork and clone spksrc:
git clone https://github.com/YOUR-USERNAME/spksrc - Install Docker on your host OS (see Docker installation, or use a
wget-based alternative for linux Install Docker with wget). - Download the spksrc Docker container:
docker pull ghcr.io/synocommunity/spksrc - Run the container with the repository mounted into the
/spksrcdirectory with the appropriate command for your host Operating System:
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
- From there, follow the instructions in the Developer Guide.
虚拟机
建议使用基于 64 位 Debian 13 stable 操作系统的虚拟机。不支持非 x86 架构。
安装依赖项(与 Dockerfile 保持同步):
sudo dpkg --add-architecture i386 && sudo apt-get update
sudo apt update
sudo apt install --no-install-recommends -y \
autoconf-archive autogen automake autopoint \
bash bash-completion bc bison build-essential \
check cmake curl cython3 debootstrap ed expect \
fakeroot flex gh g++-multilib gawk gettext gfortran \
git gobject-introspection gperf imagemagick intltool \
jq libbz2-dev libc6-i386 libcppunit-dev libelf-dev \
libffi-dev libgc-dev libgmp3-dev libicu76 libltdl-dev \
libmount-dev libncurses-dev libpcre2-dev libssl-dev \
libtool libtool-bin libunistring-dev lzip man-db manpages-dev \
moreutils nasm p7zip patchelf php pkg-config plocate \
rename ripgrep rsync ruby-mustache scons subversion \
sudo swig texinfo time tree unzip xmlto yasm \
zip zlib1g-dev
安装基于 Python 的依赖项(同样与 Dockerfile 保持同步):
sudo apt install --no-install-recommends -y \
httpie mercurial meson ninja-build \
python3 python3-mako python3-pip python3-setuptools \
python3-virtualenv python3-yaml
然后,按照 开发者指南 中的说明操作。
LXC
建议使用基于 64 位 Debian 13 stable 操作系统的容器。不支持非 x86 架构。 以下假设您的 LXD/LXC 环境已初始化(例如 lxc init),并且您具备基本的 LXD/LXC 知识:
-
创建一个新的容器(默认使用 x86_64/amd64 架构):
lxc launch images:debian/13 spksrc -
启用 i386 架构:
lxc exec spksrc -- /usr/bin/dpkg --add-architecture i386 -
更新 apt 软件源:
lxc exec spksrc -- /usr/bin/apt update -
安装所有默认必需的包:
lxc exec spksrc -- /usr/bin/apt install --no-install-recommends -y \
autoconf-archive autogen automake autopoint \
bash bash-completion bc bison build-essential \
check cmake curl cython3 debootstrap ed expect \
fakeroot flex gh g++-multilib gawk gettext gfortran \
git gobject-introspection gperf imagemagick intltool \
jq libbz2-dev libc6-i386 libcppunit-dev libelf-dev \
libffi-dev libgc-dev libgmp3-dev libicu76 libltdl-dev \
libmount-dev libncurses-dev libpcre2-dev libssl-dev \
libtool libtool-bin libunistring-dev lzip man-db manpages-dev \
moreutils nasm p7zip patchelf php pkg-config plocate \
rename ripgrep rsync ruby-mustache scons subversion \
sudo swig texinfo time tree unzip xmlto yasm \
zip zlib1g-dev
- 安装基于 Python 的依赖项:
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 用户
- 默认假设您将以
spksrc用户身份在 LXC 容器中运行。 该用户需要在默认容器镜像中创建:
lxc exec spksrc -- /usr/sbin/adduser --uid 1001 spksrc
- 设置默认 shell 环境:
lxc exec spksrc --user 1001 -- cp /etc/skel/.profile /etc/skel/.bashrc ~spksrc/.
从那里,您可以连接到您的容器 spksrc,并按照 开发者指南 中的说明进行操作。
lxc exec spksrc -- su --login spksrc
spksrc@spksrc:~$
(可选)LXC:共享 spksrc 用户
您可以在 Debian/Ubuntu 主机和 LXC Debian 容器之间创建一个共享用户,这将极大地简化两者之间的文件管理。 以下内容假设您已在 Debian/Ubuntu 主机环境中创建了一个 uid 为 1001 的用户 spksrc,并且希望共享其 /home 用户空间。
- 在主机和 LXC 映像之间创建映射规则:
lxc config set spksrc raw.idmap "both 1001 1001"
lxc restart spksrc
Remapping container filesystem
- 从主机向 LXC 容器添加
/home/spksrc:
lxc config device add spksrc home disk path=/home/spksrc source=/home/spksrc
Device home added to spksrc
- 以
spksrc用户身份连接:
lxc exec spksrc -- su --login spksrc
spksrc@spksrc:~$
LXC: 代理(可选)
以下内容假设你在局域网环境中已有一个运行中的代理,其 IP 地址为 192.168.1.1,监听端口 3128,并允许缓存文件。
- 强制使用代理:
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
- 在 spksrc 容器用户账户中强制使用带有
wget的代理:
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"
用法
一旦你配置好了开发环境,你就可以开始构建软件包、创建新的软件包,或在改进现有软件包的同时,让你的更改可供其他人使用。 有关如何使用 spksrc 的信息,请参阅开发者指南。
许可证
当未明确设置时,文件将置于 3 条款 BSD 许可证