secubox-openwrt/DOCS-zh/archive/BUILD_ISSUES.md
CyberMind-FR ccfb58124c docs: Add trilingual documentation (French and Chinese translations)
Add complete French (fr) and Chinese (zh) translations for all documentation:

- Root files: README, CHANGELOG, SECURITY, BETA-RELEASE
- docs/: All 16 core documentation files
- DOCS/: All 19 deep-dive documents including embedded/ and archive/
- package/secubox/: All 123+ package READMEs
- Misc: secubox-tools/, scripts/, EXAMPLES/, config-backups/, streamlit-apps/

Total: 346 translation files created

Each file includes language switcher links for easy navigation between
English, French, and Chinese versions.

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2026-03-20 10:00:18 +01:00

196 lines
5.1 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

# 构建问题与解决方案
> **Languages:** [English](../../DOCS/archive/BUILD_ISSUES.md) | [Francais](../../DOCS-fr/archive/BUILD_ISSUES.md) | 中文
**版本:** 1.0.0
**最后更新:** 2025-12-28
**状态:** 活跃
## 当前问题GitHub Actions上未生成IPK
### 根本原因
OpenWrt **SDK**无法编译LuCI核心依赖项`lucihttp`、`cgi-io`),因为它缺少必要的`ubus`开发头文件。在构建SecuBox包时SDK尝试从源代码编译所有依赖项导致失败
```
ERROR: package/feeds/luci/lucihttp failed to build.
ubus_include_dir-NOTFOUND
```
### 为什么在本地可以工作
在本地,您可能有以下配置之一:
1. **完整的OpenWrt构建树** - 拥有所有头文件,可以编译所有内容
2. **ImageBuilder** - 使用预编译包,不从源代码编译
3. **预安装的依赖项** - lucihttp/cgi-io已经存在
### 为什么在GitHub Actions上失败
GitHub Actions使用**OpenWrt SDK**,它:
- 可以编译带有编译代码的包
- 无法编译某些LuCI核心包缺少头文件
- 尝试从源代码重新构建所有依赖项
## 解决方案
### 选项1使用OpenWrt ImageBuilder推荐
**最适合:** 创建预装SecuBox的固件镜像
ImageBuilder使用预编译包不需要编译
```yaml
# 使用ImageBuilder的新工作流
- name: Download ImageBuilder
run: |
wget https://downloads.openwrt.org/releases/${VERSION}/targets/${TARGET}/${SUBTARGET}/openwrt-imagebuilder-*.tar.xz
tar xf openwrt-imagebuilder-*.tar.xz
- name: Add custom packages
run: |
mkdir -p imagebuilder/packages/custom
cp *.ipk imagebuilder/packages/custom/
- name: Build image
run: |
cd imagebuilder
make image PACKAGES="luci luci-app-secubox luci-app-*-dashboard"
```
**优点:**
- 没有编译问题
- 创建完整的固件镜像
- 快速构建(使用二进制文件)
**缺点:**
- 需要指定目标设备
- 不适合多架构包构建
### 选项2使用完整的OpenWrt构建系统
**最适合:** 完全控制、自定义内核,或需要修改核心包时
克隆并构建完整的OpenWrt
```yaml
- name: Clone OpenWrt
run: |
git clone https://github.com/openwrt/openwrt.git
cd openwrt
./scripts/feeds update -a
./scripts/feeds install -a
- name: Add SecuBox packages
run: |
cp -r ../luci-app-* openwrt/package/
- name: Build
run: |
cd openwrt
make defconfig
make -j$(nproc)
```
**优点:**
- 可以编译所有内容
- 完全控制构建
- 可以修改核心包
**缺点:**
- 非常慢每个架构1-2小时
- 需要大量磁盘空间30-50GB
- 配置复杂
### 选项3纯包仓库替代方案
**最适合:** 分发用户在现有OpenWrt系统上安装的包
创建自定义包源:
```bash
# 在您的服务器/GitHub Pages上
mkdir -p packages/${ARCH}/secubox
cp *.ipk packages/${ARCH}/secubox/
scripts/ipkg-make-index packages/${ARCH}/secubox > Packages
gzip -c Packages > Packages.gz
```
用户添加到`/etc/opkg/customfeeds.conf`
```
src/gz secubox https://yourdomain.com/packages/${ARCH}/secubox
```
**优点:**
- 不需要构建(分发源代码)
- 用户本地编译或使用二进制文件
- 易于更新
**缺点:**
- 用户需要手动安装
- 不提供固件镜像
### 选项4修复SDK构建当前尝试
当前工作流尝试变通方法:
1. 下载包索引
2. 配置SDK优先使用二进制文件CONFIG_BUILDBOT=y
3. 如果编译失败,回退到直接打包
**状态:** 实验性,可能不可靠
**优点:**
- 保持现有工作流结构
- 多架构构建
**缺点:**
- 脆弱依赖SDK的特性
- 可能因OpenWrt更新而中断
- 非官方支持
## 推荐方法
### 包分发
使用**选项3**(包仓库)结合**选项1**示例固件的ImageBuilder
1. **通过GitHub releases分发源码包**
2. **为常见架构提供预构建的.ipk**x86-64、ARM
3. **使用ImageBuilder为流行设备创建示例固件**
4. **记录安装说明**供想要在现有OpenWrt上安装的用户使用
### 实施步骤
1. **创建包源工作流**替换当前SDK构建
2. **添加ImageBuilder工作流**用于示例固件ESPRESSObin、x86-64等
3. **更新README**包含安装说明
4. **标记发布**包含源代码和二进制文件
## 后续步骤
实施推荐的解决方案:
```bash
# 1. 为ImageBuilder创建新工作流
cp .github/workflows/build-secubox-images.yml .github/workflows/build-imagebuilder.yml
# 编辑以使用ImageBuilder而不是完整构建
# 2. 更新包构建工作流以创建源而不是编译
# (保持源代码分发,跳过编译)
# 3. 更新文档
# 添加INSTALL.md包含不同场景的说明
```
## 临时变通方法
在实施正确的解决方案之前,用户可以:
1. **从GitHub下载源代码**
2. **使用local-build.sh本地构建**需要SDK设置
3. **或使用现有的固件构建**(如果可用)
## 参考资料
- OpenWrt SDK: https://openwrt.org/docs/guide-developer/toolchain/using_the_sdk
- OpenWrt ImageBuilder: https://openwrt.org/docs/guide-user/additional-software/imagebuilder
- 包源: https://openwrt.org/docs/guide-developer/feeds