1. 部署环境

(1)安装libcurl4-openssl-dev git make cmake curl pkg-config libssl-dev软件包

sudo apt-get update
sudo apt-get install libcurl4-openssl-dev git make cmake curl pkg-config libssl-dev

(2)配置我们将要使用的USER和GROUP变量:

USER=用户名
GROUP=当前用户组名

(3)创建目录:

sudo mkdir -p /opt/{dev,git}
sudo chown -R $USER:$GROUP /opt/{dev,git}

(4)编译json-c:

[1] 克隆源码:

git clone http://192.168.100.58:3000/json-c/json-c.git /opt/git/json-c

[2] 生成配置文件:

cd /opt/git/json-c/
mkdir json-c-build
cd json-c-build
cmake ../../json-c   # 有关自定义参数,请参阅下面的CMake部分

[3] 编译:

make
make test
make USE_VALGRIND=0 test # optionally skip using valgrind

[4] 安装:

sudo make install
sudo ln -sf /usr/local/include/json-c /usr/include/json

(5)编译libubox:

[1] 克隆源码:

git clone http://192.168.100.58:3000/luci2/libubox.git /opt/git/libubox

[2] 配置cmake:

cd /opt/git/libubox/
cmake CMakeLists.txt -DBUILD_LUA=OFF

[3] 编译:

make

[4] 安装:

sudo make install
sudo ln -sf /usr/local/lib/libubox.so /usr/lib/libubox.so
sudo mkdir -p /usr/share/libubox
sudo ln -sf /usr/local/share/libubox/jshn.sh /usr/share/libubox/jshn.sh

(6)编译uci

[1] 克隆源码:

git clone http://192.168.100.58:3000/uci/uci.git /opt/git/uci

[2] 配置cmake:

cd /opt/git/uci/
cmake CMakeLists.txt -DBUILD_LUA=OFF

[3] 编译:

make

[4] 安装:

class="western"
sudo make install
sudo ln -sf /usr/local/bin/uci /sbin/uci
sudo ln -sf /usr/local/lib/libuci.so /usr/lib/libuci.so

(7)编译ubus

[1] 克隆源码:

git clone http://192.168.100.58:3000/luci2/ubus.git /opt/git/ubus

[2] 配置cmake:

cd /opt/git/ubus/
cmake CMakeLists.txt -DBUILD_LUA=OFF  

[3] 编译:

make

[4] 安装:

sudo make install
sudo ln -sf /usr/local/sbin/ubusd /usr/sbin/ubusd
sudo ln -sf /usr/local/lib/libubus.so /usr/lib/libubus.so

(8)编译microxml

[1] 克隆源码:

git clone http://192.168.100.58:3000/CWMP/pivasoftware_microxml.git /opt/git/microxml

[2] 生产配置文件:

cd /opt/git/microxml/
autoconf -i

[3] 配置:

./configure --prefix=/usr --enable-threads --enable-shared --enable-static

[4] 编译:

make

[5] 安装:

sudo make install
sudo ln -sf /usr/lib/libmicroxml.so.1.0 /lib/libmicroxml.so
sudo ln -sf /usr/lib/libmicroxml.so.1.0 /lib/libmicroxml.so.1

2. 安装easycwmp

(1) 下载 easycwmp-{x}.{y}.{z}.tar.gz 解压到 /opt/dev/

~/wget https://easycwmp.org/download/easycwmp-1.8.6.tar.gz
tar -xzvf easycwmp-1.8.6.tar.gz
mv easycwmp-1.8.6 /opt/dev/easycwmp
cd /opt/dev/easycwmp/

(2) 生成配置文件:

autoreconf -i

(3) 配置编译:

./configure --enable-debug --enable-devel --enable-acs=multi --enable-jsonc=1

(4) 编译:

make

(5) 符号链接:

[1] 际设备上创建脚本所在的目录:

sudo mkdir -p /usr/share/easycwmp/functions sudo mkdir -p /etc/easycwmp

[2] easycwmp脚本创建符号链接:

sudo ln -sf /opt/dev/easycwmp/ext/openwrt/scripts/easycwmp.sh /usr/sbin/easycwmp
sudo ln -sf /opt/dev/easycwmp/ext/openwrt/scripts/defaults /usr/share/easycwmp/defaults
sudo ln -sf /opt/dev/easycwmp/ext/openwrt/scripts/functions/common/common /usr/share/easycwmp/functions/common
sudo ln -sf /opt/dev/easycwmp/ext/openwrt/scripts/functions/common/device_info /usr/share/easycwmp/functions/device_info
sudo ln -sf /opt/dev/easycwmp/ext/openwrt/scripts/functions/common/management_server /usr/share/easycwmp/functions/management_server
sudo ln -sf /opt/dev/easycwmp/ext/openwrt/scripts/functions/common/ipping_launch /usr/share/easycwmp/functions/ipping_launch
sudo ln -sf /opt/dev/easycwmp/ext/openwrt/scripts/functions/tr181/root /usr/share/easycwmp/functions/root
sudo ln -sf /opt/dev/easycwmp/ext/openwrt/scripts/functions/tr181/ip /usr/share/easycwmp/functions/ip
sudo ln -sf /opt/dev/easycwmp/ext/openwrt/scripts/functions/tr181/ipping_diagnostic /usr/share/easycwmp/functions/ipping_diagnostic

[3] 修改脚本为可执行:

chmod +x /opt/dev/easycwmp/ext/openwrt/scripts/functions/*

[4] 为easycwmp配置文件创建符号链接:

sudo mkdir /etc/config
sudo ln -sf /opt/dev/easycwmp/ext/openwrt/config/easycwmp /etc/config/easycwmp

[5] 为easycwmpd二进制文件创建符号链接:

sudo ln -sf /opt/dev/easycwmp/bin/easycwmpd /usr/sbin/easycwmpd

[6] 在easycwmp脚本中使用的一些变量:

Export UCI_CONFIG_DIR="/opt/dev/easycwmp/ext/openwrt/config/" export UBUS_SOCKET="/var/run/ubus.sock"

[7] 从OpenWrt安装一些shell脚本:

sudo mkdir -p /lib/{config,functions}
sudo wget http://pastebin.lukaperkov.net/openwrt/20121219_lib_functions.sh -O /lib/functions.sh
sudo wget http://pastebin.lukaperkov.net/openwrt/20121219_lib_config_uci.sh -O /lib/config/uci.sh
sudo wget http://pastebin.lukaperkov.net/openwrt/20121219_lib_functions_network.sh -O /lib/functions/network.sh

[8] 如果在运行时一切配置正确,执行以下操作:

bash /usr/sbin/easycwmp get value Device.

[9] 根据您的系统,您可能需要:

export PATH=$PATH:/usr/sbin:/sbin sudo ln -sf bash /bin/sh

[10] 确保已在另一个运行ubusd的终端中:

ubusd -s /var/run/ubus.sock

[11] 以根用户身份运行easycwmpd:

/usr/sbin/easycwmpd -f -b