![Gem::Ext::BuildError: 错误: 无法构建 gem 本机扩展](https://linux22.com/image/158634/Gem%3A%3AExt%3A%3ABuildError%3A%20%E9%94%99%E8%AF%AF%3A%20%E6%97%A0%E6%B3%95%E6%9E%84%E5%BB%BA%20gem%20%E6%9C%AC%E6%9C%BA%E6%89%A9%E5%B1%95.png)
我有以下 Dockerfile:
FROM debian:stretch-backports
RUN apt-get update && apt-get install -y --no-install-recommends \
build-essential \
ruby ruby-dev \
curl wget \
gnupg \
git \
ncbi-blast+ zlib1g-dev
RUN curl -sL https://deb.nodesource.com/setup_8.x | bash - && \
apt-get update && apt-get install -y --no-install-recommends \
nodejs && \
rm -rf /var/lib/apt/lists/*
RUN gem install bundler && \
wget -c https://github.com/wurmlab/sequenceserver/archive/1.1.0.beta12.tar.gz && \
tar xfvz 1.1.0.beta12.tar.gz && \
cd sequenceserver-1.1.0.beta12 && \
npm install && \
bundle instal
这导致了以下错误:
...
Installing childprocess 1.0.1 with native extensions
Gem::Ext::BuildError: ERROR: Failed to build gem native extension.
current directory: /var/lib/gems/2.3.0/gems/childprocess-1.0.1/ext
/usr/bin/ruby2.3 mkrf_conf.rb
current directory: /var/lib/gems/2.3.0/gems/childprocess-1.0.1/ext
/usr/bin/ruby2.3 -rubygems
/usr/share/rubygems-integration/all/gems/rake-10.5.0/bin/rake
RUBYARCHDIR=/var/lib/gems/2.3.0/extensions/x86_64-linux/2.3.0/childprocess-1.0.1
RUBYLIBDIR=/var/lib/gems/2.3.0/extensions/x86_64-linux/2.3.0/childprocess-1.0.1
/usr/bin/ruby2.3: No such file or directory --
/usr/share/rubygems-integration/all/gems/rake-10.5.0/bin/rake (LoadError)
rake failed, exit code 1
Gem files will remain installed in /var/lib/gems/2.3.0/gems/childprocess-1.0.1
for inspection.
Results logged to
/var/lib/gems/2.3.0/extensions/x86_64-linux/2.3.0/childprocess-1.0.1/gem_make.out
An error occurred while installing childprocess (1.0.1), and Bundler cannot
continue.
Make sure that `gem install childprocess -v '1.0.1' --source
'http://rubygems.org/'` succeeds before bundling.
In Gemfile:
selenium-webdriver was resolved to 3.142.3, which depends on
childprocess
我错过了什么?
先感谢您
答案1
首先,你的 Dockerfile 末尾有一个拼写错误,但我认为这是复制和粘贴造成的。
不过,我是通过先安装 rake 来构建它的。所以你的最后一个 Docker 命令应该是:
RUN gem install bundler && \
gem install rake && \
wget -c https://github.com/wurmlab/sequenceserver/archive/1.1.0.beta12.tar.gz && \
tar xfvz 1.1.0.beta12.tar.gz && \
cd sequenceserver-1.1.0.beta12 && \
npm install && \
bundle install