Techioz Blog

特定のバージョンとプラットフォームで gem を検索するにはどうすればよいですか

概要

Ruby:2.5.1 x86_64 Docker コンテナーで、sorbet-static:0.5.10346-x86_64-linux が Bundle install と gem install sorbet-static:0.5.10346 –platform x86_64-linux のどちらでもインストールできないという問題が発生しました。

そこで、Docker コンテナー内の特定のバージョンとプラットフォームで sorbet-static gem の可用性を確認したいと考えています。

問題の部分

FROM ruby:2.5.1
# To be able to install old packages from archive.
ADD ./docker/web/sources.list /etc/apt/sources.list
RUN apt-get update -qq && apt-get install -y build-essential nodejs && rm -rf /var/lib/apt/lists/*
ENV APP_PATH /opt/app
WORKDIR $APP_PATH
ADD Gemfile $APP_PATH
ADD Gemfile.lock $APP_PATH
ADD gems $APP_PATH/gems
RUN bundle install --jobs `expr $(cat /proc/cpuinfo | grep -c "cpu cores") - 1` --retry 3
Fetching gem metadata from https://rubygems.org/........
Could not find sorbet-static-0.5.10346-x86_64-linux in any of the sources

以下のコマンドを試しましたが、結果は役に立ちませんでした。

最新バージョンを入手しました。

gem search sorbet-static

バージョンとプラットフォームの組み合わせが多すぎる結果が得られました。

gem search sorbet-static --all

解決策

🗎 Dockerfile

FROM ruby:2.5.1

RUN echo "deb http://archive.debian.org/debian/ stretch main contrib non-free" > /etc/apt/sources.list && \
    echo "deb-src http://archive.debian.org/debian/ stretch main contrib non-free" >> /etc/apt/sources.list

RUN apt-get update -qq && \
    apt-get install -y build-essential nodejs && \
    rm -rf /var/lib/apt/lists/*

ADD Gemfile .

RUN bundle install --jobs `expr $(cat /proc/cpuinfo | grep -c "cpu cores") - 1` --retry 3

🗎 ジェムファイル

source 'https://rubygems.org'

gem 'sorbet-static', '0.5.10346'

以下のスクリーンショットは、必要なバージョンがインストールされていることを確認します。