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

Ubuntu系统下OpenDaylight源码编译安装

481次阅读
没有评论

共计 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、短信等云产品特惠热卖中

星哥玩云

星哥玩云
星哥玩云
分享互联网知识
用户数
4
文章数
19351
评论数
4
阅读量
7971529
文章搜索
热门文章
星哥带你玩飞牛NAS-6:抖音视频同步工具,视频下载自动下载保存

星哥带你玩飞牛NAS-6:抖音视频同步工具,视频下载自动下载保存

星哥带你玩飞牛 NAS-6:抖音视频同步工具,视频下载自动下载保存 前言 各位玩 NAS 的朋友好,我是星哥!...
星哥带你玩飞牛NAS-3:安装飞牛NAS后的很有必要的操作

星哥带你玩飞牛NAS-3:安装飞牛NAS后的很有必要的操作

星哥带你玩飞牛 NAS-3:安装飞牛 NAS 后的很有必要的操作 前言 如果你已经有了飞牛 NAS 系统,之前...
我把用了20年的360安全卫士卸载了

我把用了20年的360安全卫士卸载了

我把用了 20 年的 360 安全卫士卸载了 是的,正如标题你看到的。 原因 偷摸安装自家的软件 莫名其妙安装...
再见zabbix!轻量级自建服务器监控神器在Linux 的完整部署指南

再见zabbix!轻量级自建服务器监控神器在Linux 的完整部署指南

再见 zabbix!轻量级自建服务器监控神器在 Linux 的完整部署指南 在日常运维中,服务器监控是绕不开的...
飞牛NAS中安装Navidrome音乐文件中文标签乱码问题解决、安装FntermX终端

飞牛NAS中安装Navidrome音乐文件中文标签乱码问题解决、安装FntermX终端

飞牛 NAS 中安装 Navidrome 音乐文件中文标签乱码问题解决、安装 FntermX 终端 问题背景 ...
阿里云CDN
阿里云CDN-提高用户访问的响应速度和成功率
随机文章
多服务器管理神器 Nexterm 横空出世!NAS/Win/Linux 通吃,SSH/VNC/RDP 一站式搞定

多服务器管理神器 Nexterm 横空出世!NAS/Win/Linux 通吃,SSH/VNC/RDP 一站式搞定

多服务器管理神器 Nexterm 横空出世!NAS/Win/Linux 通吃,SSH/VNC/RDP 一站式搞...
告别Notion焦虑!这款全平台开源加密笔记神器,让你的隐私真正“上锁”

告别Notion焦虑!这款全平台开源加密笔记神器,让你的隐私真正“上锁”

  告别 Notion 焦虑!这款全平台开源加密笔记神器,让你的隐私真正“上锁” 引言 在数字笔记工...
小白也能看懂:什么是云服务器?腾讯云 vs 阿里云对比

小白也能看懂:什么是云服务器?腾讯云 vs 阿里云对比

小白也能看懂:什么是云服务器?腾讯云 vs 阿里云对比 星哥玩云,带你从小白到上云高手。今天咱们就来聊聊——什...
星哥带你玩飞牛NAS-12:开源笔记的进化之路,效率玩家的新选择

星哥带你玩飞牛NAS-12:开源笔记的进化之路,效率玩家的新选择

星哥带你玩飞牛 NAS-12:开源笔记的进化之路,效率玩家的新选择 前言 如何高效管理知识与笔记,已经成为技术...
终于收到了以女儿为原型打印的3D玩偶了

终于收到了以女儿为原型打印的3D玩偶了

终于收到了以女儿为原型打印的 3D 玩偶了 前些日子参加某网站活动,获得一次实物 3D 打印的机会,于是从众多...

免费图片视频管理工具让灵感库告别混乱

一言一句话
-「
手气不错
免费无广告!这款跨平台AI RSS阅读器,拯救你的信息焦虑

免费无广告!这款跨平台AI RSS阅读器,拯救你的信息焦虑

  免费无广告!这款跨平台 AI RSS 阅读器,拯救你的信息焦虑 在算法推荐主导信息流的时代,我们...
如何安装2026年最强个人助理ClawdBot、完整安装教程

如何安装2026年最强个人助理ClawdBot、完整安装教程

如何安装 2026 年最强个人助理 ClawdBot、完整安装教程 一、前言 学不完,根本学不完!近期,一款名...
开源MoneyPrinterTurbo 利用AI大模型,一键生成高清短视频!

开源MoneyPrinterTurbo 利用AI大模型,一键生成高清短视频!

  开源 MoneyPrinterTurbo 利用 AI 大模型,一键生成高清短视频! 在短视频内容...
手把手教你,购买云服务器并且安装宝塔面板

手把手教你,购买云服务器并且安装宝塔面板

手把手教你,购买云服务器并且安装宝塔面板 前言 大家好,我是星哥。星哥发现很多新手刚接触服务器时,都会被“选购...
一句话生成拓扑图!AI+Draw.io 封神开源组合,工具让你的效率爆炸

一句话生成拓扑图!AI+Draw.io 封神开源组合,工具让你的效率爆炸

一句话生成拓扑图!AI+Draw.io 封神开源组合,工具让你的效率爆炸 前言 作为天天跟架构图、拓扑图死磕的...