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>
6.4 KiB
Problemes de Compilation & Solutions
Version: 1.0.0 Derniere mise a jour: 2025-12-28 Statut: Actif
Probleme Actuel: Aucun IPK Genere sur GitHub Actions
Cause Racine
Le SDK OpenWrt ne peut pas compiler les dependances principales de LuCI (lucihttp, cgi-io) car il lui manque les en-tetes de developpement ubus necessaires. Lors de la compilation des packages SecuBox, le SDK essaie de compiler toutes les dependances depuis les sources, ce qui echoue avec:
ERROR: package/feeds/luci/lucihttp failed to build.
ubus_include_dir-NOTFOUND
Pourquoi Cela Fonctionne Localement
Localement, vous avez probablement l'une de ces configurations:
- Arbre de compilation OpenWrt complet - Possede tous les en-tetes et peut tout compiler
- ImageBuilder - Utilise des packages pre-compiles, ne compile pas depuis les sources
- Dependances pre-installees - lucihttp/cgi-io existent deja
Pourquoi Cela Echoue sur GitHub Actions
GitHub Actions utilise le SDK OpenWrt qui:
- Peut compiler des packages avec du code compile
- Ne peut pas compiler certains packages principaux de LuCI (en-tetes manquants)
- Essaie de reconstruire toutes les dependances depuis les sources
Solutions
Option 1: Utiliser OpenWrt ImageBuilder (Recommande)
Ideal pour: Creer des images firmware avec SecuBox pre-installe
ImageBuilder utilise des packages pre-compiles et ne necessite pas de compilation:
# Nouveau workflow utilisant 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"
Avantages:
- Aucun probleme de compilation
- Cree des images firmware completes
- Compilations rapides (utilise des binaires)
Inconvenients:
- Necessite de specifier l'appareil cible
- Pas adapte pour les compilations de packages multi-architecture
Option 2: Utiliser le Systeme de Compilation OpenWrt Complet
Ideal pour: Controle complet, kernels personnalises, ou quand vous devez modifier des packages principaux
Cloner et compiler OpenWrt complet:
- 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)
Avantages:
- Peut tout compiler
- Controle complet sur la compilation
- Peut modifier les packages principaux
Inconvenients:
- Tres lent (1-2 heures par architecture)
- Necessite un espace disque important (30-50Go)
- Configuration complexe
Option 3: Depot de Packages Uniquement (Alternative)
Ideal pour: Distribuer des packages que les utilisateurs installent sur des systemes OpenWrt existants
Creer un flux de packages personnalise:
# Sur votre serveur/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
Les utilisateurs ajoutent dans /etc/opkg/customfeeds.conf:
src/gz secubox https://yourdomain.com/packages/${ARCH}/secubox
Avantages:
- Pas de compilation necessaire (distribue les sources)
- Les utilisateurs compilent localement ou utilisent des binaires
- Mises a jour faciles
Inconvenients:
- Les utilisateurs doivent installer manuellement
- Ne fournit pas d'images firmware
Option 4: Corriger la Compilation SDK (Tentative Actuelle)
Le workflow actuel tente des contournements:
- Telecharger les index de packages
- Configurer le SDK pour preferer les binaires (CONFIG_BUILDBOT=y)
- Solution de repli vers le packaging direct si la compilation echoue
Statut: Experimental, peut ne pas fonctionner de maniere fiable
Avantages:
- Conserve la structure de workflow existante
- Compilations multi-architecture
Inconvenients:
- Fragile, depend des particularites du SDK
- Peut casser avec les mises a jour OpenWrt
- Non officiellement supporte
Approche Recommandee
Pour la Distribution de Packages
Utiliser l'Option 3 (Depot de Packages) combinee avec l'Option 1 (ImageBuilder pour les firmwares exemples):
- Distribuer les packages source via les releases GitHub
- Fournir des .ipk pre-compiles pour les architectures courantes (x86-64, ARM)
- Creer des firmwares exemples avec ImageBuilder pour les appareils populaires
- Documenter l'installation pour les utilisateurs qui veulent installer sur OpenWrt existant
Etapes d'Implementation
- Creer un workflow de flux de packages (remplace la compilation SDK actuelle)
- Ajouter un workflow ImageBuilder pour les firmwares exemples (ESPRESSObin, x86-64, etc.)
- Mettre a jour le README avec les instructions d'installation
- Tagger les releases avec les sources et les binaires
Prochaines Etapes
Pour implementer la solution recommandee:
# 1. Creer un nouveau workflow pour ImageBuilder
cp .github/workflows/build-secubox-images.yml .github/workflows/build-imagebuilder.yml
# Editer pour utiliser ImageBuilder au lieu de la compilation complete
# 2. Mettre a jour le workflow de compilation de packages pour creer un flux au lieu de compiler
# (Conserver la distribution des sources, sauter la compilation)
# 3. Mettre a jour la documentation
# Ajouter INSTALL.md avec des instructions pour differents scenarios
Contournement Temporaire
Jusqu'a l'implementation de la solution appropriee, les utilisateurs peuvent:
- Telecharger les sources depuis GitHub
- Compiler localement en utilisant local-build.sh (necessite la configuration du SDK)
- Ou utiliser les compilations firmware existantes (quand disponibles)
References
- SDK OpenWrt: https://openwrt.org/docs/guide-developer/toolchain/using_the_sdk
- ImageBuilder OpenWrt: https://openwrt.org/docs/guide-user/additional-software/imagebuilder
- Flux de Packages: https://openwrt.org/docs/guide-developer/feeds