You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Ubuntu 20.04通过Bazel安装ONOS及构建报错解决方法

问题根因

ONOS各版本对Bazel存在强版本绑定,手动修改.bazelversion文件、跨大版本使用Bazel构建都会触发规则不兼容问题。之前手动下载对应版本Bazel仍构建失败,普遍是路径配置错误、权限不足、本地多版本Bazel冲突导致。

Ubuntu 20.04 LTS 分步部署指引(适配mininet/containernet场景)
  • 第一步:清理冲突环境
    卸载所有已安装的Bazel版本,删除残留缓存和配置,避免版本冲突:
    sudo apt remove -y bazel*
    sudo rm -rf /home/$USER/.bazel /usr/local/bin/bazel /usr/bin/bazel /home/$USER/.cache/bazel
    
  • 第二步:安装基础依赖
    安装ONOS构建必需的JDK和工具链,注意必须使用OpenJDK 11,高版本JDK会触发注解处理器兼容报错:
    sudo apt update
    sudo apt install -y openjdk-11-jdk curl git unzip python3
    
  • 第三步:安装Bazel版本管理工具
    安装Bazelisk,该工具会自动读取项目根目录.bazelversion文件声明的版本,拉取匹配的Bazel二进制,无需手动下载放置对应版本。将Bazelisk二进制放入/usr/local/bin目录并赋予可执行权限,命名为bazel即可。
  • 第四步:拉取兼容版本ONOS源码
    拉取ONOS 2.7 LTS分支源码,该分支默认绑定Bazel 3.7.2,对mininet/containernet的SDN场景兼容性最好,不要手动修改分支内的.bazelversion文件:
    git clone https://gerrit.onosproject.org/onos
    cd onos
    git checkout 2.7
    
  • 第五步:配置目录权限
    给Bazel缓存目录配置当前用户权限,避免权限不足导致版本读取、文件写入失败:
    mkdir -p /home/$USER/.cache/bazel
    sudo chown -R $USER:$USER /home/$USER/.cache/bazel /home/$USER/onos
    
  • 第六步:执行构建
    在onos源码根目录执行构建命令:
    bazel build onos
    
    首次构建会自动拉取匹配的Bazel 3.7.2版本和所有项目依赖,耗时15-40分钟取决于网络状态,中途如果提示缺系统依赖,按报错提示通过apt安装对应包即可。
常见问题排查
  • 禁止手动修改.bazelversion文件强行使用Bazel 5.1.1构建,ONOS 2.7及更早版本的BUILD规则与Bazel 4.0+版本语法不兼容,会触发大量规则报错,无法完成构建。
  • 如果坚持手动安装Bazel 3.7.2不使用Bazelisk,需要将下载的二进制文件重命名为bazel-3.7.2-linux-x86_64放入/home/$USER/.bazel/bin目录,赋予可执行权限,同时在同目录下创建名为bazel的软链指向该二进制,否则Bazel启动器无法识别到对应版本。
  • 构建前要确认默认Java版本为OpenJDK 11,可通过java -version命令检查,若版本不符可通过sudo update-alternatives --config java切换。

内容的提问来源于stack exchange,提问作者Kavya K

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.03 00:57:25