阿里云-云小站(无限量代金券发放中)
【腾讯云】云服务器、云数据库、COS、CDN、短信等热卖云产品特惠抢购

Ubuntu系统下OpenDaylight源码编译安装

199次阅读
没有评论

共计 5827 个字符,预计需要花费 15 分钟才能阅读完成。

操作系统:Linux x64 / Ubuntu 14.04

研究领域:软件定义网络 SDN(Software-defined Networking)

开发组件:OpenDaylight

一、环境搭建

1. Java+Apache Maven 基本开发环境搭建。详见相应的前面两篇文档:

《Ubuntu Linux 系统下 Java 开发环境搭建》http://www.linuxidc.com/Linux/2015-12/126928.htm

《Ubuntu Linux 系统下 Apache Maven 的安装和配置》http://www.linuxidc.com/Linux/2015-12/126929.htm

2. 安装用来获取 OpenDaylight 源码的 Git 工具。

sudo apt-get install git-core

3. 针对 Opendaylight,安装好 Maven 后,需要编辑一个非常重要的文件 settings.xml。直接修改该文件,就能在机器上全局地定制 Maven 的行为。~/.m2 是默认的 maven 本地仓库。刚装好 maven 的后~/.m2 下是没有 settings.xml 的文件的。在 /etc/maven 下有 settings.xml 的原型,一般情况下,我们更偏向于复制该文件至 home 目录下的.m2/ 目录下(这里~ 表示用户目录),然后修改该文件,在用户范围定制 Maven 的行为。前者又被叫做全局配置,后者被称为用户配置。如果两者都存在,它们的内容将被合并,并且用户范围的 settings.xml 优先。在这里要在~/ 目录下创建.m2 文件夹,然后执行修改命令(详见官网:https://wiki.opendaylight.org/view/GettingStarted:Development_Environment_Setup):

sudo mkdir .m2
sudo cp -n ~/.m2/settings.xml{,.orig} ; \wget -q -O – https://raw.githubusercontent.com/opendaylight/odlparent/master/settings.xml > ~/.m2/settings.xml

完成后输入“sudo gedit /.m2/settings.xml”查看 settings.xml 内容,应该显示如下:

# Shortcut command for grabbing settings.xml
cp -n ~/.m2/settings.xml{,.orig} ; \
wget -q -O – https://raw.githubusercontent.com/opendaylight/odlparent/master/settings.xml > ~/.m2/settings.xml
<settings xmlns=”http://maven.apache.org/SETTINGS/1.0.0″
  xmlns:xsi=”http://www.w3.org/2001/XMLSchema-instance”
  xsi:schemaLocation=”http://maven.apache.org/SETTINGS/1.0.0 http://maven.apache.org/xsd/settings-1.0.0.xsd”>
 
  <profiles>
    <profile>
      <id>opendaylight-release</id>
      <repositories>
        <repository>
          <id>opendaylight-mirror</id>
          <name>opendaylight-mirror</name>
          <url>http://nexus.opendaylight.org/content/repositories/public/</url>
          <releases>
            <enabled>true</enabled>
            <updatePolicy>never</updatePolicy>
          </releases>
          <snapshots>
            <enabled>false</enabled>
          </snapshots>
        </repository>
      </repositories>
      <pluginRepositories>
        <pluginRepository>
          <id>opendaylight-mirror</id>
          <name>opendaylight-mirror</name>
          <url>http://nexus.opendaylight.org/content/repositories/public/</url>
          <releases>
            <enabled>true</enabled>
            <updatePolicy>never</updatePolicy>
          </releases>
          <snapshots>
            <enabled>false</enabled>
          </snapshots>
        </pluginRepository>
      </pluginRepositories>
    </profile>

    <profile>
      <id>opendaylight-snapshots</id>
      <repositories>
        <repository>
          <id>opendaylight-snapshot</id>
          <name>opendaylight-snapshot</name>
          <url>http://nexus.opendaylight.org/content/repositories/opendaylight.snapshot/</url>
          <releases>
            <enabled>false</enabled>
          </releases>
          <snapshots>
            <enabled>true</enabled>
          </snapshots>
        </repository>
      </repositories>
      <pluginRepositories>
        <pluginRepository>
          <id>opendaylight-snapshot</id>
          <name>opendaylight-snapshot</name>
          <url>http://nexus.opendaylight.org/content/repositories/opendaylight.snapshot/</url>
          <releases>
            <enabled>false</enabled>
          </releases>
          <snapshots>
            <enabled>true</enabled>
          </snapshots>
        </pluginRepository>
      </pluginRepositories>
    </profile>
  </profiles>

  <activeProfiles>
    <activeProfile>opendaylight-release</activeProfile>
    <activeProfile>opendaylight-snapshots</activeProfile>
  </activeProfiles>
</settings>

二、OpenDaylight 源码获取、编译和安装

1. 新建项目文件夹,获取 OpenDaylight 源码:

sudo mkdir openDayLight
cd openDayLight
sudo git clone https://git.opendaylight.org/gerrit/p/controller.git

2. 指定编译 ODL 的版本(以 Lithium 锂版本为例)并查看确认:

cd controller
sudo git checkout stable/lithium
git branch

3. 联网编译 Controller(确认之前的 settings.xml 文件已经修改好):

mvn clean install

* 如果编译过程中出现 Test 编译错误,可以加上 -DskipTests 跳过测试加快编译速度,其他编译错误和尝试解决方案:

目前遇到两种:
a. 指定目录不能创建或访问:更改文件夹读写权限,进入 sudo 模式重新编译
b. pom.xml 相关错误:将~/.m2 下的 settings.xml 复制到 /root/.m2 目录下:sudo cp ~/.m2/settings.xml /root/.m2,重新编译
编译成功!

4. 控制器验证运行。

旧版本的目录结构是“controller/opendaylight/distribution”,在新版本的目录结构中不再存在“distribution”这个子文件夹,这就是很多朋友参照以前的指南却找不到 distribution 子文件夹来启动控制器的原因。在这里应该 cd 进入“controller/karaf/opendaylight-karaf”文件夹,输入:

./target/assembly/bin/karaf

这时将启动控制器进入 opendaylight-user@root> 模式。这个时候,Opendaylight 的 controller 项目初步安装就完成了!

* 三、TEST:Integration 项目源码的编译安装

* 之前编译好的 Controller 项目是没有 WebGUI(DLUX)等丰富 Feature 的核心控制器。Integration 是一个框架性的工程,所有自己开发和修改的部分(包括 controller、openflowPlugin&Java 三个工程)编译为包后,都可以放在该工程的目录下一起执行。注意,如果是自己开发的包,则可以直接放到该目录下。但是如果是修改的原本工程,然后编译的包要替换掉上面目录中原来的包,这里有个问题是 integration 的 plugin 目录下的包名和 controller,openflowplugin,openflowjava 中编译出来的包命名方式有点小差别,复制过去之前先重命名下,使之和目录下的原来包文件名一致,再复制替换。(参考自 @jason-zhou 童鞋的《OpenDaylight 开发学习笔记基础之 Controller 篇》)。将各个工程的 jar 包 copy 到 integration 里后,运用 mvn clean install 编译 integration。工程所在目录:

username@ubuntu:~/developApps/openDayLight/integration/distributions/karaf/target/assembly/system/org/opendaylight$ ls
aaa              integration      neutron        sdninterfaceapp  usc
bgpcep            iotdm            nic            sfc              vpnservice
capwap            l2switch        odlparent      snmp            vtn
<strong><span style=”color:#ff0000;”>controller</span></strong>        lacp            <strong><span style=”color:#ff0000;”>openflowjava</span></strong>    sxp              yangtools
coretutorials    lispflowmapping  <span style=”color:#ff0000;”><strong>openflowplugin</strong></span>  tcpmd5
didm              mdsal            ovsdb          topoprocessing
dlux              nemo            packetcable    tsdr
groupbasedpolicy  netconf          reservation    ttp

* 这里仅给出基本的 Integration 项目的编译安装步骤,Openflowplugin 和 Openflowjava 工程将另文详述。

1. 下载并编译 Integration。

 回到 openDaylight 根目录,输入如下命令获取 Integration 源码:

git clone https://git.opendaylight.org/gerrit/p/integration.git

操作完成后可以看到目录下多出了 integration 目录,进入 integration 目录,指定版本(checkout)为 stable/lithium,进行编译:

cd integration
git checkout stable/lithium
mvn clean install -DskipTests(或者 cd 进入子目录 /distributions/karaf 下执行此命令)

2. 编译完成后,进入 integration/distributions/karaf/target/assembly 目录,运行如下命令启动 ODL:

bin/karaf

此时进入 ODL 命令行界面,通过“feature:list -i”命令可以查看已经安装的功能模块,通过“feature:install <feature>”命令可以安装想要的 feature。

* Karaf module 会把控制器的 Plugin 制作成 Karaf Feature,然后打包成可以导入到 Apache karaf 的 kar 文件。Karaf 基于 OSGI 的运行环境,做为 OSGI 应用的管理容器提供各种管理 utility。

到这里,一个可供开发和安装丰富 Feature 功能模块的 OpenDaylight 控制器已经基本搭建完成。

本文永久更新链接地址:http://www.linuxidc.com/Linux/2015-12/1269.30htm

正文完
星哥玩云-微信公众号
post-qrcode
 0
星锅
版权声明:本站原创文章,由 星锅 于2022-01-21发表,共计5827字。
转载说明:除特殊说明外本站文章皆由CC-4.0协议发布,转载请注明出处。
【腾讯云】推广者专属福利,新客户无门槛领取总价值高达2860元代金券,每种代金券限量500张,先到先得。
阿里云-最新活动爆款每日限量供应
评论(没有评论)
验证码
【腾讯云】云服务器、云数据库、COS、CDN、短信等云产品特惠热卖中