onos编译安装(Ubuntu16.04)
1 前置下载安装
1.1 前置包安装
sudo apt-get install git
sudo apt-get install python
#Oracle JDK8
sudo apt-get install software-properties-common -y && \
sudo add-apt-repository ppa:webupd8team/java -y && \
sudo apt-get update && \
echo "oracle-java8-installer shared/accepted-oracle-license-v1-1 select true" | sudo debconf-set-selections && \
sudo apt-get install oracle-java8-installer oracle-java8-set-default -y
#Oracle JDK8仓库已经废弃
#这里尝试自己去安装jdk,配置环境,但是build的时候有问题
#安装openjdk 8(参考docker)
sudo add-apt-repository ppa:openjdk-r/ppa
sudo apt-get install openjdk-8-jdk -y
1.2 bazel 下载安装(这里好像onos又更新了,bazle可以选择0.23.0–参考docker file里面的版本)
(1)官网下载bazel-0.19.2-installer-linux-86_64.sh并拖入虚拟机桌面
(2)安装
#前置包
sudo apt-get install pkg-config zip g++ zlib1g-dev unzip python
#运行install
chmod +x bazel-0.19.2-installer-linux-x86_64.sh
./bazel-0.19.2-installer-linux-x86_64.sh --user
#修改~/.bashrc
sudo gedit ~/.bashrc
#添加
export PATH="$PATH:$HOME/bin"
. ~/.bashrc
1.3 源码下载及环境设置
(1)源码下载及切换分支
sudo git clone https://gerrit.onosproject.org/onos
#切换分支到onos-2.0
cd onos
sudo git checkout onos-2.0
sudo git branch
(2)环境配置
cd onos
cat << EOF >> ~/.bash_profile
export ONOS_ROOT="`pwd`"
source $ONOS_ROOT/tools/dev/bash_profile
EOF
#上面的执行完可能不对,修改source
sudo gedit ~/.bash_profile
source $ONOS_ROOT/tools/dev/bash_profile
. ~/.bash_profile
#这里最好配到/etc/profile中
export ONOS_ROOT="/opt/onos"
source $ONOS_ROOT/tools/dev/bash_profile
#重启
reboot
1.4 idea下载安装及bazel插件安装
(1)下载安装(自行百度)
(2)插件安装
打开idea,选择下发的Confiure
选择Settings
搜索plugins
在商店搜索bazel插件,安装(这里注意到,最新的bazel插件可能在导入中出现问题,使用v2019.03.05.01版本bazel插件--自行百度查找,安装)
用idea打开项目的时候选择import bazel项目,用onos根目录下的build文件来import
2 修改Build及编译安装
2.1 修改build文件(先进入onos目录,尝试bazle build onos如果出现npm安装错误,如果在build的时候没有这个错误不用修改)
2.1.1 可以访问外网(有代理)
# 添加代理
export HTTPS_PROXY=https://proxy_ip:port
export HTTP_PROXY=http://proxy_ip:port
# bazel运行时
bazel build onos --action_env=HTTP_PROXY=$HTTP_PROXY
2.1.2 不可以访问外网(大部分情况),给npm更换淘宝库
(1) 修改onos/web/gui/BUILD
#修改1 _onos-gui-npm-install
#在 cmd的 $$NPM $$NPM_ARGS install 后添加
--registry https://registry.npm.taobao.org
#修改2_onos-gui-npm-build
#在cmd倒数第4行$$ROOT/$$NPM $$NPM_ARGS run build --no-cache 后添加
--registry https://registry.npm.taobao.org
(2) 修改onos/web/gui2-fw-lib/BUILD
#在onos-gui2-fw-npm-install 的cmd 的npm $$NPM_ARGS install后添加
--registry https://registry.npm.taobao.org
2.2 build
cd onos
bazel build onos
#如果失败,多试几次以后成功
2.3 启动
bazel run onos-local [-- [clean] [debug]]
#(1)利用cli来安装激活应用
#登录cli
onos localhost
#安装特性
feature:install onos-providers-openflow-app
feature:install onos-apps-fwd
#激活特性
app activate org.onosproject.openflow
app activate org.onosproject.fwd
#(2)利用环境变量来激活安装应用(run之前配置,不需要进入cli)
export ONOS_APPS="drivers,openflow,proxyarp,lldpprovider,fwd"
2.4 UI
http://localhost:8181/onos/ui/index.html
onos/rocks
#主机默认不显示,按键H后显示
2.5 调试
#命令行
bazel run onos-local -- debug
#idea
Run
Edit Configurations
+(选择Remote)
点击OK
2.6 新建app
#在app目录下新建应用
#添加build依赖
#编写代码(src/min/java中的java目录修改其为source目录)
#代码写好后在tools/build/bazle/modules.bzl文件中的ONOS_APPS属性里面添加
"//apps/应用名:onos-apps-应用名-oar"