Debian

Gem::Ext::BuildError: 錯誤: 無法建構 gem 原生擴展

  • August 9, 2019

我有以下 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

我錯過了什麼?

先感謝您

首先,您的 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

引用自:https://unix.stackexchange.com/questions/534701