EasyCwmp 安装

EasyCwmp 安装

源代码下载地址为:http://easycwmp.org/download/easycwmp-1.8.6.tar.gz

一般参考官网发布版本中README文件就可以成功安装,但是部分同学可能会遇到各种问题,本文按照官方提供的安装方法一步一步安装验证,其中遇到一些依赖库安装问题,已整理到本文安装步骤中。

1. OpenWRT Linux 上安装 EasyCwmp

EasyCwmp 部分

EasyCwmp主要是在OpenWRT Linux平台上开发和测试的。

下载:

下载 easycwmp-openwrt- {x}.{y}.{z}.tar.gz,然后将其复制到您的/path/to/openwrt/package/

cd /path/to/openwrt/package/
tar -xzvf easycwmp-openwrt.tar.gz
cd ..

编译:

make menuconfig   #(And then select the package as <*>)
make

编译打包:

make menuconfig   #(And then select the package as <M>)
make package/easycwmp/compile

安装:

编译:根据OpenWRT手册在设备中安装OpenWRT系统 ,然后启动系统,您将自动运行 easycwmp
编译打包:将软件包复制到OpenWRT系统,然后使用以下方法安装:

opkg install

启动 easycwmpd 方式1:

/etc/init.d/easycwmpd start

启动 easycwmpd 方式2:

/etc/init.d/easycwmpd boot

注意: 如果使用start命令运行easycwmpd,它将向ACS发送包含“ 2 PERIODIC”事件的通知,并将GetRPCMethods发送到ACS。并且,如果使用boot命令运行easycwmpd,它将向ACS发送包含“ 1 BOOT”事件的通知。

注意: 第三方应用程序可以通过调用以下命令来触发EasyCwmp守护程序发送通知(带有值更改事件的通知):

ubus call tr069 notify

如果EasyCwmp守护程序接收到ubus调用notify,则它将检查是否存在告警信息。

microxml

如果在OpenWRT中构建EasyCwmp时遇到与lib microxml有关的任何问题,则可以使用以下libmicroxml软件包:

cd /path/to/openwrt/package/
wget http://easycwmp.org/download/libmicroxml.tar.gz

2. 其他 Linux 发行版本安装 EasyCwmp

general

easycwmp将放置在/opt/dev/目录中。所有其他依赖项将安装在/opt/git/目录中。

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

USER=your_user
GROUP=your_group

创建目录:

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

curl
sudo apt install libcurl4-openssl-dev

您的发行版应该已经包含curl开发包。可以直接使用。

注意:如果使用SSL软件包依赖关系来构建libcurl,则建议使用OpenSSL进行构建,因为EasyCwmp主要是使用OpenSSL与libcurl一起测试的。

如果使用PolarSSL构建libcurl,则无法使用ACS服务器进行摘要身份验证。


json-c
git clone git://github.com/json-c/json-c.git /opt/git/json-c
cd /opt/git/json-c/

生成配置文件:

mkdir json-c-build
cd json-c-build
cmake ../../json-c   # See CMake section below for custom arguments

编译:

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

安装:

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

libubox

下载源码:

git clone git://nbd.name/luci2/libubox.git /opt/git/libubox
cd /opt/git/libubox/

配置cmake:

cmake CMakeLists.txt -DBUILD_LUA=OFF

编译:

make

libubox在make时,报错

blobmsg_json.c:78:2 error: implicit declaration of function 'is_error'
jshn.c:162:2: error: implicit declaration of function 'is_error'

需要在对应C文件中添加 #define is_error(ptr) (ptr == NULL)宏定义重新编译

安装:

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

uci

下载源码:

git clone git://nbd.name/uci.git /opt/git/uci
cd /opt/git/uci/

配置cmake:

cmake CMakeLists.txt -DBUILD_LUA=OFF

编译:

make

安装:

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

ubus

下载源码:

git clone git://nbd.name/luci2/ubus.git /opt/git/ubus
cd /opt/git/ubus/

配置cmake:

cmake CMakeLists.txt -DBUILD_LUA=OFF

编译:

make

安装:

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

microxml

下载源码:

git clone https://github.com/pivasoftware/microxml.git /opt/git/microxml
cd /opt/git/microxml/

生成配置文件:

autoconf -i

配置:

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

编译:

make

安装:

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

easycwmp

编译:
一旦安装了依赖项,我们就可以开始编译easycwmp。

下载源码:

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

cd /opt/dev/
tar -xzvf easycwmp-{x}.{y}.{z}.tar.gz
mv easycwmp-{x}.{y}.{z} easycwmp
cd /opt/dev/easycwmp/

生成配置文件:

autoreconf -i

配置编译:

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

编译:

make

可能出现如下错误:

./configure: line 4129: syntax error near unexpected token `LIBCURL,'
./configure: line 4129: `PKG_CHECK_MODULES(LIBCURL, libcurl)'

解决方法:安装PKG依赖包

apt install pkg-config
apt install libssl-dev

然后从 autoreconf -i 开始重新安装

不用安装easycwmp,将其存放到/opt/dev/easycwmp/目录中,可直接使用它,进入 /opt/dev/easycwmp/目录

cd /opt/dev/easycwmp/

因为我们正在使用此设置进行开发,所以我们希望所有更改都在git克隆中可见。最好的方法是使用符号链接。首先在实际设备上创建脚本所在的目录:

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

然后为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

然后修改脚本为可执行

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

同样,可以为easycwmp配置文件创建符号链接:

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

最后为easycwmpd二进制文件创建符号链接:

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

导出在easycwmp脚本中使用的一些变量:

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

从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

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

bash /usr/sbin/easycwmp get value Device.

可以看到打印输出如下:

{ "parameter": "Device.DeviceInfo.Manufacturer", "fault_code": "", "value": "easycwmp", "type": "xsd:string" }
{ "parameter": "Device.DeviceInfo.ManufacturerOUI", "fault_code": "", "value": "FFFFFF", "type": "xsd:string" }
{ "parameter": "Device.DeviceInfo.ProductClass", "fault_code": "", "value": "easycwmp", "type": "xsd:string" }
{ "parameter": "Device.DeviceInfo.SerialNumber", "fault_code": "", "value": "FFFFFF123456", "type": "xsd:string" }
{ "parameter": "Device.DeviceInfo.HardwareVersion", "fault_code": "", "value": "example_hw_version", "type": "xsd:string" }
{ "parameter": "Device.DeviceInfo.SoftwareVersion", "fault_code": "", "value": "example_sw_version", "type": "xsd:string" }
{ "parameter": "Device.DeviceInfo.UpTime", "fault_code": "", "value": "429120", "type": "xsd:string" }
...

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

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

请注意,您的系统/bin/sh符号链接应指向bash解释器。

在/etc/config/easycwmp和/usr/share/easycwmp/defaults中进行更改,以便easycwmpd可以连接到ACS服务器。但是在运行easycwmpd之前,请确保已在另一个运行ubusd的终端中:

ubusd -s /var/run/ubus.sock

最后以根用户身份运行easycwmpd:

/usr/sbin/easycwmpd -f -b

注意: 第三方应用程序可以通过调用以下命令来触发EasyCwmp守护程序发送通知(带有值更改事件的通知):

ubus call tr069 notify

如果EasyCwmp守护程序接收到ubus调用notify,则它将检查是否存在告警信息。

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值