前言
最近在做模型量化过程中,需要用到bazel去构建但报了个错误(前提:已经安装与tensorflow对应的bazel版本)
查了网上许多帖子大致的方法都是:1.搭建一个本地的http服务 2.自己下载release-62-1.tar.gz并放到指定位置。整个流程我自己也试了一遍,第一个步骤是基本一致的,但第二步会出现一些问题没能像网上的方法那么顺利,所以把过程记录一下方便以后安装构建也和大家分享共同进步
第一步:搭建一个本地的http服务
打开终端,按以下顺序直接复制粘贴命令
sudo apt-get install httpd
sudo apt-get install apache2
sudo apt-get install apache2-dev
查看是否安装完成
sudo systemctl status apache2
到这里第一步就基本完成了,在浏览器输入localhost能够显示这个页面即可(如果不行要检查下网络或者更换下网络,比如有些公司网络有限制,切换自己热点即可)
第二步 release-62-1.tar.gz的安装
这里我踩了个坑(可能是我个人出现但还是记录下来)
踩坑分割线------------------------
按照别人的方法,
1.手动下载icu-release-62-1.tar.gz 链接:下载地址 重命名为release-62-1.tar.gz后用管理员权限复制到/var/www/html/目录下
2.复制"http://localhost/release-62-1.tar.gz"添加到tensorflow/third_party/icu/workspace.bzl的urls中
重新运行bazel构建,这时候坑出现了,首先报错问题仍然和之前一样no such package ‘@icu//’: java.io.IOException错误下载
问题并没有解决,但从错误来看,是错误下载release-62-1.tar.gz到/home/ly-weizg/.cache/bazel/_bazel_ly-weizg/720edaac3b4680ad1b600bb2388200ef/external/icu/release-62-1.tar.gz这一串巴拉拉的文件下,那么是不是说明以上操作都是为了把release-62-1.tar.gz能够下载到这个指定目录(这里检讨自己没有认真阅读错误的问题去思考),所以是不是之前把release-62-1.tar.gz复制存放的位置错了,应该到这个指定目录下?马上一顿操作猛如虎(也就复制…),结果出现了另一个坑,吐血…
在我复制完检查icu目录下,
文件确实存在,重新用bazel构建仍然报错…诡异的是重新查看icu目录下的文件,文件消失了…
怀疑是重新构建过程中,这个文件被重新下载覆盖掉了,但又没下载成功,于是继续报错…
填坑分割线---------------------------
以下是自己成功的方法,很简单也不需要手动下载
第一步 仍然是搭建本地的http服务
第二步 手动添加"http://localhost/release-62-1.tar.gz"添加到tensorflow/third_party/icu/workspace.bzl的urls,这里最好复制到第一行去
运行bazel构建,确保自己网络畅通
可以看到release-62-1.tar.gz是在下载,过一会会报另一个错误
主要就是Checksum校验错误,把Checksum was 后面这一串巴拉拉的神秘符文复制到刚才tensorflow/third_party/icu目录下的workspace.bzl中的sha256的内容替换掉,重新保存
bazel重新构建成功完成(第一次会比较久)