moow_packages 是一个面向 OpenWrt / ImmortalWrt SDK 与 Buildroot 的第三方软件包 feed。
当前仓库主要包含这些包:
smartdnssmartdns-uiluci-app-smartdnsddns-goluci-app-ddns-gonaiveproxyphantun-clientphantun-serverluci-theme-argongn(主要作为naiveproxy的构建依赖)
在 SDK 或完整源码的 feeds.conf.default 里加入:
src-git-full moow_packages https://github.com/XMoon/moow_packages.git然后更新 feed:
./scripts/feeds update -a下面这套流程基于实际编译记录整理,适用于在 OpenWrt SDK 中单独编译本仓库包体。
至少需要一套常见的 OpenWrt SDK 构建依赖,例如:
apt install build-essential clang flex bison g++ gawk \
gcc-multilib g++-multilib gettext git libncurses5-dev libssl-dev \
python3-setuptools rsync swig unzip zlib1g-dev file wget如果要编译 smartdns-ui,还需要额外注意:
- 本机需可用
npm - 需要 Rust host 构建环境
- 网络需能访问 npm / cargo / GitHub 下载源
常见安装方式如下:
./scripts/feeds install phantun-server
./scripts/feeds install phantun-client
./scripts/feeds install luci-theme-argon
./scripts/feeds install naiveproxy
./scripts/feeds install luci-app-ddns-gosmartdns / luci-app-smartdns 与官方 feed 存在同名包时,建议显式强制切到 moow_packages 版本:
./scripts/feeds uninstall smartdns luci-app-smartdns smartdns-ui
./scripts/feeds install -p moow_packages -f smartdns luci-app-smartdns smartdns-ui说明:
-p moow_packages指定安装来源-f强制覆盖同名包
安装完成后,package/feeds/moow_packages/* 会链接到本仓库对应目录。
make menuconfig建议第一次先选成模块包 =m,便于单独分发和验证。
排查问题时,优先使用单线程详细日志:
make package/feeds/moow_packages/smartdns/compile -j1 V=s
make package/feeds/moow_packages/luci-app-smartdns/compile -j1 V=s
make package/feeds/moow_packages/ddns-go/compile -j1 V=s
make package/feeds/moow_packages/luci-app-ddns-go/compile -j1 V=s
make package/feeds/moow_packages/naiveproxy/compile -j1 V=s
make package/feeds/moow_packages/phantun/compile -j1 V=s
make package/feeds/moow_packages/luci-theme-argon/compile -j1 V=s几个目标名对应关系:
phantun-server/phantun-client共用package/feeds/moow_packages/phantun/compilesmartdns-ui由smartdns目录一并产出luci-app-ddns-go和ddns-go可以分开编
如果不想触发整套 OpenWrt 已选包编译,只想快速编译 moow_packages 里的包,可以一次指定多个本 feed 的 compile 目标,并交给 make -j$(nproc) 并发执行:
make -j$(nproc) V=s \
package/feeds/moow_packages/smartdns/compile \
package/feeds/moow_packages/luci-app-smartdns/compile \
package/feeds/moow_packages/ddns-go/compile \
package/feeds/moow_packages/luci-app-ddns-go/compile \
package/feeds/moow_packages/naiveproxy/compile \
package/feeds/moow_packages/phantun/compile \
package/feeds/moow_packages/luci-theme-argon/compile这会编译上面显式指定的包目标,以及它们需要的依赖。正常快速构建时可以保留 -j$(nproc);如果只是想看更少日志,可以去掉 V=s;排查失败时再改回单包 -j1 V=s。
如果确实想编译当前 .config 里选中的全部目标,例如完整固件或 SDK 中所有已选包,才直接使用:
make -j$(nproc)编译产物通常在:
bin/packages/<arch>/moow_packages/例如 x86_64 SDK 下通常是:
bin/packages/x86_64/moow_packages/可用下面的命令快速检查:
find bin/packages -path '*/moow_packages/*' -type f这个仓库在 SDK feed 场景下需要从 feeds/packages 引入 Rust 构建辅助文件:
include $(TOPDIR)/feeds/packages/lang/rust/rust-package.mk如果编译卡在 Go 模块下载,先检查代理和 Go 环境变量:
env | grep -E '^(http|https|all|HTTP|HTTPS|ALL)_proxy=|^GOPROXY=|^NO_PROXY=|^no_proxy='如果本地代理配置异常,可以先清掉:
unset http_proxy https_proxy all_proxy HTTP_PROXY HTTPS_PROXY ALL_PROXY在 WSL 环境里,如果 PATH 被注入了带空格的 Windows 路径,例如 Program Files,部分 Go 包在 OpenWrt SDK 里可能会因为 PATH 展开问题而构建失败。
这类问题通常出现在外部 feed feeds/packages/lang/golang/golang-package.mk,不是本仓库自身逻辑问题,但在 WSL 环境下比较常见。
smartdns-ui 会额外触发 Rust 与前端构建流程,包括:
cargo install --force --locked bindgen-clinpm installnpm run build
如果只需要 smartdns 服务端,建议不要同时启用 smartdns-ui。
./scripts/feeds update -a
./scripts/feeds install phantun-server
./scripts/feeds install phantun-client
./scripts/feeds install luci-theme-argon
./scripts/feeds install naiveproxy
./scripts/feeds install luci-app-ddns-go
./scripts/feeds uninstall smartdns luci-app-smartdns smartdns-ui
./scripts/feeds install -p moow_packages -f smartdns luci-app-smartdns smartdns-ui
make menuconfig
make -j$(nproc) V=s \
package/feeds/moow_packages/smartdns/compile \
package/feeds/moow_packages/luci-app-smartdns/compile \
package/feeds/moow_packages/ddns-go/compile \
package/feeds/moow_packages/luci-app-ddns-go/compile \
package/feeds/moow_packages/naiveproxy/compile \
package/feeds/moow_packages/phantun/compile \
package/feeds/moow_packages/luci-theme-argon/compile