ChinaDNS icon indicating copy to clipboard operation
ChinaDNS copied to clipboard

OpenWRT package Dependency

Open nicolas-yangli opened this issue 10 years ago • 6 comments

Init script 里使用了 iptables -j REDIRECT. 这个功能由 iptables-mod-nat-extra 提供。

nicolas-yangli avatar Sep 14 '14 11:09 nicolas-yangli

这应该是个可选的依赖,毕竟也有人不用 redirect 而是直接监听 53 端口。

clowwindy avatar Sep 14 '14 12:09 clowwindy

我是这样理解的,这个包里面包含了 init script, 而这个 init scipt 正常工作依赖于 iptables-mod-nat-extra, 就应该列为依赖。

如果要做成可选,应该是拆成 ChinaDNS-C-minimal 和 ChinaDNS-C 两个包。ChinaDNS-C-minimal 只包含 binary 和 data. ChinaDNS-C 包含 init script, 依赖 ChinaDNS-C-minimal 和 iptables-mod-nat-extra.

nicolas-yangli avatar Sep 14 '14 14:09 nicolas-yangli

那么我想知道 iptables-mod-nat-extra 是不是一个普遍存在的包,会不会有些人的路由器或者系统装不了,安装费不费力,再做决定。毕竟装上之后发现启动报错然后尝试解决(有好几种解决方法),比依赖不能满足,安装不上要好。

clowwindy avatar Sep 14 '14 15:09 clowwindy

不加入依赖的情况下,出现报错是 'unknown option "--to-ports"', 尝试解决需要看出这个报错是缺少了 target REDIRECT, 然后需要再 Google 这个功能包含在哪个包里。

iptables-mod-nat-extra 是依赖内核版本的,在加入依赖时,第三方编译的固件,可能会因为官方源里面的内核模块版本和内核版本不一致而无法安装。这时需要在安装 ChinaDNS-C 时使用 --force-depends 来强制安装,然后使用直接监听 53 端口之类的方法解决。

在编译 OpenWRT 时,如果使用 downloads.openwrt.org 上提供的 config, iptables-mod-nat-extra 是作为模块编译的,也就是说,这个包不会被包含在刷机文件里,但是会生成 package.

nicolas-yangli avatar Sep 15 '14 07:09 nicolas-yangli

使用 --force-depends 应该是个可以接受的解决方案。

clowwindy avatar Sep 15 '14 07:09 clowwindy

在我看来,使用 --force-depends 不是一个好的做法,因为内核版本不匹配的话,插入模块是不能正常工作的。如果是使用官方已经release的代码分支,比如cc-rc3,编译出来的内核模块的版本是几乎固定的,除非有一些重要的backport改动会影响内核部分,稳定分支可以考虑用官方发布的SDK进行编译。iptables-mod-nat-extra是一个可选包,可以由用户自由选定,至于古老的AA分支,官方也不再进行支持了。

wongsyrone avatar Jul 26 '15 03:07 wongsyrone