在搭载Rails 6.0.3的LinuxKit Docker镜像中安装red-arrow 3.0.0 gem失败
报错根因
编译red-arrow 3.0.0原生扩展时,pkg-config工具无法找到thrift的包配置文件。Apache Arrow 3.0版本的pkg-config配置默认声明了私有依赖thrift,你当前的Docker镜像未安装thrift的开发组件,导致依赖校验失败,无法生成Makefile完成编译。
修复步骤
- 在执行bundle install前的apt安装环节,补充安装
libthrift-dev、libarrow-dev、libarrow-glib-dev这几个编译必需的底层依赖包。 - 确保编译gem原生扩展时build-essential等编译工具未被提前卸载,所有编译依赖安装完成后再执行bundle install,之后再清理不需要的编译组件缩减镜像体积。
调整后的Dockerfile对应片段
RUN apt-get update -qq \ && apt-get install -y --no-install-recommends build-essential libparquet-glib300 libarrow-dev libarrow-glib-dev libthrift-dev \ && bundle install --without development test \ && apt-get purge -y build-essential libthrift-dev libarrow-dev \ && apt-get -y autoremove \ && rm -rf /var/cache/apt
内容的提问来源于stack exchange,提问作者Alexey Vtorushin
相关产品推荐
相关产品推荐

