编译Apollo自动驾驶项目报错缺少zlib

  进入docker后编译时报错:ERROR: An error occurred during the fetch of repository 'zlib',如下图所示:

  出现这个错误的原因是Apollo依赖protobuf库,而protobuf库又依赖zlib库。这些库都要从网上下载,而protobuf库提供的zlib下载链接是https://zlib.net/zlib-1.2.11.tar.gz,问题是这个链接已经失效了,下载当然会失败。

  解决方法是替换新的可用链接,具体就是修改Apollo项目文件夹中的.cache/bazel/540135163923dd7d5820f3ee4b306b32/external/rules_proto/proto/private文件夹里的dependencies.bzl文件,将"zlib"的部分改成以下即可。

"zlib": {
        "sha256": "629380c90a77b964d896ed37163f5c3a34f6e6d897311f1df2a7016355c45eff",
        "build_file": "@com_google_protobuf//:third_party/zlib.BUILD",
        "strip_prefix": "zlib-1.2.11",
        "urls": [
            "https://github.com/madler/zlib/archive/v1.2.11.tar.gz",
        ],
    }

  见微知著,从这个小问题便可以看出百度的Apollo自动驾驶项目居然需要从美国服务器下载很多的依赖库。而且一旦下载不成功就报错,这种严重依赖网络条件的安装方式对不熟悉Linux的用户来说实在是太不友好了,完全是逼着用户自学Linux,这不是欺负人不懂Linux吗。反正我是自学grep命令,把文件夹里所有包含关键字“https://zlib.net/zlib-1.2.11.tar.gz”的位置导出到txt里,然后一个个看应该改哪一个文件。
  一个号称安全性很高的自动驾驶项目,安装起来居然需要一些不靠谱时刻可能改变的网络链接,真是可笑。百度为什么不把所有依赖都放到自己家的网盘里提供一次性打包下载呢,真不知道百度开发自动驾驶的工程师脑子是怎么想的,可能是在基础研发和工具上跟美国眉来眼去套近乎,但是在搜索内容上又把人家拒之门外。

你可能感兴趣的:(无人驾驶,python)