在模拟中使用rvm在docker下安装x86_64 ruby

kuuvgm7e  于 2023-08-04  发布在  Ruby
关注(0)|答案(1)|浏览(122)

我正在构建一个使用ruby的Docker镜像,并使用rvm安装。如果我在Apple Silicon下使用docker buildx build --platform linux/amd64,linux/arm64 …构建,并且在构建脚本中使用rvm install 2.7,它会构建并安装ARM64版本,甚至在amd64映像中也是如此:

$ uname -a
Linux 628f228dda6f 4.14.22 #1 SMP Thu Oct 27 08:01:25 UTC 2022 Build-38 x86_64 GNU/Linux

$ file /home/foo/.rvm/rubies/ruby-2.7.8/bin/ruby
/home/foo/.rvm/rubies/ruby-2.7.8/bin/ruby: ELF 64-bit LSB pie executable, ARM aarch64, version 1 (SYSV), dynamically linked, interpreter /lib/ld-linux-aarch64.so.1, for GNU/Linux 3.7.0, BuildID[sha1]=e3ea67d64604f36deef9f6eb95cc99078337d287, with debug_info, not stripped

字符串
这个镜像显然不能在amd64硬件上运行ruby。
如何告诉rvm安装amd64版本的Ruby?我尝试了ARCHFLAGS="$(uname -m)" rvm install 2.7,但没有效果,设置rvm install 2.7 --arch x86_64会导致gcc的编译错误。

dly7yett

dly7yett1#

我的问题是,我的Dockerfile中有一个FROM --platform=$BUILDPLATFORM,这迫使我使用Mac的(ARM64)架构对该阶段进行了一次构建。随后的构建阶段是多平台的,工作正常,但复制了ARM Ruby代码。

相关问题