Ray 编译踩坑记:老版本在老系统上的编译之路

Ray 编译踩坑记:老版本在老系统上的编译之路

💡 原文中文,约44200字,阅读约需106分钟。
📝

内容提要

本文记录了在 macOS 和 CentOS 8 上编译 Ray 2.40.0 的过程,解决了缺失 pip 模块、zlib 兼容性和 GCC 版本过低等问题。通过 git bisect 定位并修复问题,最终成功编译,并将解决方案分享给社区,帮助其他开发者。

🎯

关键要点

  • 本文记录了在 macOS 和 CentOS 8 上编译 Ray 2.40.0 的过程。
  • 编译过程中解决了缺失 pip 模块、zlib 兼容性和 GCC 版本过低等问题。
  • 在 MacBook 上编译 Ray 时,首先配置开发环境并安装必要的依赖。
  • 编译 2.52.1 版本成功后,尝试编译 2.40.0 版本时遇到 pip 模块缺失的问题。
  • 通过检查代码发现 Ray 使用子进程安装 pip 包,导致环境变量不完整。
  • 使用 git bisect 定位到导致编译成功的关键 commit,并修复了 pip 依赖问题。
  • 在 CentOS 8 上编译 Ray 时,面临环境配置的挑战,推荐使用 Docker 确保环境一致性。
  • 解决了 GCC 版本过低、GLIBC Fortify 冲突和 .bazelrc 强制启用 -Werror 的问题。
  • 最终成功编译 Ray 2.40.0,并将解决方案分享给社区,帮助其他开发者。

延伸问答

在 macOS 上编译 Ray 2.40.0 时遇到了哪些主要问题?

主要问题包括缺失 pip 模块、zlib 兼容性和 GCC 版本过低等。

如何在 macOS 上解决 Ray 编译时的 pip 模块缺失问题?

通过检查代码发现 Ray 使用子进程安装 pip 包,导致环境变量不完整,需手动执行 pip 安装命令。

在 CentOS 8 上编译 Ray 时推荐的环境配置方法是什么?

推荐使用 Docker 拉取 CentOS 8 镜像,以确保编译环境与生产环境一致性。

如何使用 git bisect 定位 Ray 编译中的问题?

通过 git bisect 二分查找,可以高效定位到导致编译成功的关键 commit,从而解决问题。

在编译 Ray 时,如何解决 GCC 版本过低的问题?

将 GCC 升级到 11.2.1 版本,以支持 C++17 特性,解决编译中的歧义错误。

编译 Ray 2.40.0 的最终成功步骤是什么?

在解决 pip 依赖和 zlib 兼容性问题后,成功编译 Ray 2.40.0,并将解决方案分享给社区。

➡️

继续阅读