学习opendaylight(环境搭建)
(一)安装Java
执行 java –version 查看使用的 java 版本
这个版本的 ubuntu 装的应该是 jdk 1.8
安装debian钥匙环
apt install debian-archive-keyring
添加必要的仓库
add-apt-repository 'deb http://mirrors.163.com/debian experimental main'
add-apt-repository 'deb http://mirrors.163.com/debian sid main'
创建文件/etc/apt/preferences.d/debian,并添加如下内容
vim
/etc/apt/preferences.d/debian
####################################################
Package: *
Pin: release o=Debian,n=experimental
Pin-Priority: -1
Package: *
Pin: release o=Debian,n=sid
Pin-Priority: -1
Package: openjdk-7-jdk
Pin: release o=Debian,n=experimental
Pin-Priority: 500
Package: openjdk-7-jre
Pin: release o=Debian,n=experimental
Pin-Priority: 500
Package: openjdk-7-jre-headless
Pin: release o=Debian,n=experimental
Pin-Priority: 500
Package: libjpeg62-turbo
Pin: release o=Debian,n=sid
Pin-Priority: 500
#################################################
前提准备--Ubuntu16.04的安装源已经默认没有openjdk7了,所以要自己手动添加仓库,如下:
# 1. oracle openjdk ppa source //必安
sudo add-apt-repository
ppa:openjdk-r/ppa
sudo apt-get update
sudo apt-get install openjdk-7-jdk // OpenJdk 7安装
# 2. oracle java jdk ppa source
add-apt-repository
ppa:webupd8team/java
apt-get update
apt-get install
libfontconfig1=2.12.6-0.1
//openjdk-7-jdk依赖
apt-get install fontconfig-config=2.12.6-0.1 //openjdk-7-jdk依赖
apt install openjdk-7-jdk
- 执行apt-get remove openjdk-6-jre-lib openjdk-6-jre-headless删除jdk 1.6相关的
东西
注意:执行这个命令的时候,需要观察下 remove 过程,会发现它会自动安
装 java jre 1.7 的东西,但是不要认为就不需要装
jdk 1.7 了,因为 ubuntu 默
认安装的东西是不全的,至少我安装的过程中遇到了问题。确认是否 java jdk
是否安装全面的方法是,查看 jdk 的安装目录是否完全
flight@flight-virtual-machine:~$ ls /usr/lib/jvm/java-7-openjdk-i386/lib/
ct.sym dt.jar ir.idl jconsole.jar jexec
orb.idl sa-jdi.jar
tools.jar
以上这个“tools.jar”是必不可少的,因为 maven 编译的时候对它有依赖。如果
发现 java-7-openjdk-i386 下没有 lib 文件夹,那么继续执行下一步
- 执行 sudo apt-get -y install openjdk-7-jdk
注意:依然要看一下安装过程,如果发现似乎什么都装不上,那么请执行
apt-get remove openjdk-7-jre-lib openjdk-7-jre-headless删除ubuntu给你默认安
装的东西,再执行 sudo apt-get -y install openjdk-7-jdk,之后再按上步所述查
看 jdk 是否安装完全,一般没有问题了。
- 修改 java 环境变量
vim /etc/profile 在其末尾添加如下,并保存:
export
JAVA_HOME=/usr/lib/jvm/java-1.7.0-openjdk-i386
export JRE_HOME=${JAVA_HOME}/jre
export CLASSPATH=.:${JAVA_HOME}/lib:${JRE_HOME}/lib
export PATH=${JAVA_HOME}/bin:${JRE_HOME}/bin:$PATH
完成以下修改后,需重启虚拟机或使用命令 source /etc/profile 使配臵生效
(二)安装Maven
1.最简单的方法:apt-get install maven
2.配置mavne环境
gedit /etc/profile
在文件内容后面添加以下内容:
export
M2_HOME=/usr/share/maven
export CLASSPATH=$CLASSPATH:$M2_HOME/lib
export PATH=$PATH:$M2_HOME/bin
3.保存,输入以下命令使配置文件生效。
source /etc/profile
4.验证
mvn -v
5.针对Opendaylight,安装好Maven后,需要编辑一个非常重要的文件 settings.xml。
直接修改该文件,就能在机器上全局地定制 Maven的行为。~/.m2是默认的maven本地仓库。
刚装好maven的后~/.m2下是没有settings.xml的文件的。在/etc/maven下有settings.xml的
原型,一般情况下,我们更偏向于复制该文件至home目录下的.m2/目录下(这里~表示用户
目录),然后修改该文件,在用户范围定制 Maven的行为。前者又被叫做全局配置,后者被称为
用户配置。如果两者都存在,它们的内容将被合并,并且用户范围的settings.xml优先。
在这里要在~/目录下创建.m2文件夹,然后执行修改命令
6.在/home目录下生成maven/repository文件夹
cd
/usr/share/maven/conf
vi settings.xml
(1.
<!-- localRepository
| The path to the local repository maven will use to store
artifacts.
|
| Default: ${user.home}/.m2/repository
<localRepository>/path/to/local/repo</localRepository>
-->
<localRepository>/maven/repository</localRepository>
<!-- interactiveMode
| This will determine whether maven prompts you when it needs
input. If set to false,
| maven will use a sensible default value, perhaps based on some
other setting, for
| the parameter in question.
|
| Default: true
<interactiveMode>true</interactiveMode>
-->
(2.
<mirrors>
<!-- mirror
| Specifies a repository mirror site to use instead of
a given repository. The repository that
| this mirror serves has an ID that matches the
mirrorOf element of this mirror. IDs are used
| for inheritance and direct lookup purposes, and must
be unique across the set of mirrors.
|
<mirror>
<id>nexus-aliyun</id>
<mirrorOf>central</mirrorOf>
<name>Nexus aliyun</name>
<url>http://maven.aliyun.com/nexus/content/groups/public</url>
</mirror>
-->
</mirrors>
(三) 获取代码
下载 controller:git clone
https://git.opendaylight.org/gerrit/p/controller.git
下载 openflowplugin:git clonehttps://git.opendaylight.org/gerrit/p/openflowplugin.git
下载 openflowjava:git clone
https://git.opendaylight.org/gerrit/p/openflowjava.git
下载完毕后,会在当前目录下会生成 controller、openflowplugin 和 openflowjava
三个目录。
因为 openflowplugin 依赖 openflowjava,在编译 openflowplugin 时会同时编译
openflowjava 的相关 bundle,因此 openflowjava 是不需要单独编译的,下载下它
的目的是为了后续分析它的代码结构。
发现controller/opendaylight/目录下并没有distribution文件夹,也就是需要在controller/目录下执行一遍mvn clean install。按一下步骤来:
cd controller/
git checkout stable/hydrogen
mvn clean install
可以看到是BUILD FAILURE,很多找不到依赖的问题,先不管,打开controller/opendaylight/目录,发现有distribution了,以为可以继续最上面的过程,要成功了,但又出现一些问题,执行下面命令,得到结果。
$cd controller/opendaylight/distribution/opendaylight/
$mvn clean install
第一次不成功,重启再来成功了。有毒啊。
发现有target了,美滋滋,接下来:
$cd /home/sdn/opendaylight/controller/opendaylight/distribution/opendaylight/target/distribution.opendaylight-osgipackage/opendaylight
$./run.sh
在浏览器中打开localhost:8080