ITADN
SynoCommunity/spksrc · 文件 下载 ZIP
文件最后提交记录最后更新时间
README.md
以下内容由 AI 翻译,如有问题请点此提交 issue 反馈

Discord

SynoCommunity 现已加入 Discord!

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。

  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:
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.

虚拟机

建议使用基于 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 知识:

  1. 创建一个新的容器(默认使用 x86_64/amd64 架构):lxc launch images:debian/13 spksrc

  2. 启用 i386 架构:lxc exec spksrc -- /usr/bin/dpkg --add-architecture i386

  3. 更新 apt 软件源:lxc exec spksrc -- /usr/bin/apt update

  4. 安装所有默认必需的包:

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
  1. 安装基于 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 用户

  1. 默认假设您将以 spksrc 用户身份在 LXC 容器中运行。 该用户需要在默认容器镜像中创建:
lxc exec spksrc -- /usr/sbin/adduser --uid 1001 spksrc
  1. 设置默认 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 用户空间。

  1. 在主机和 LXC 映像之间创建映射规则:
lxc config set spksrc raw.idmap "both 1001 1001"
lxc restart spksrc
Remapping container filesystem
  1. 从主机向 LXC 容器添加 /home/spksrc
lxc config device add spksrc home disk path=/home/spksrc source=/home/spksrc
Device home added to spksrc
  1. spksrc 用户身份连接:
lxc exec spksrc -- su --login spksrc
spksrc@spksrc:~$

LXC: 代理(可选)

以下内容假设你在局域网环境中已有一个运行中的代理,其 IP 地址为 192.168.1.1,监听端口 3128,并允许缓存文件。

  1. 强制使用代理:
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. 在 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 许可证