OS パッケージレジストリ(Ubuntu、Debian、Alpine)

アプリケーションのビルド依存関係の多くは、OS のパッケージリポジトリからインストールされます。Dockerfile の例:

RUN apt update && apt install -y curl

信頼性の高い安定したビルドを目指す場合、これは問題になります:

  1. 最新バージョンのパッケージがインストールされます。パッケージレジストリは常に更新されているため、上記のコマンドはコンテナがビルドされた時点で利用可能な curl のバージョンをインストールします。これにより再現可能なビルドが不可能になります。ビルドキャッシュが空になるたびにパッケージが変わり(例:新しいビルドサーバーを追加したとき)、開発者がコンテナをビルドしたタイミングによって、それぞれ異なるパッケージセットを持つことになります。

  2. パッケージが削除される可能性があります。例えば、Chromium はかつて Ubuntu で apt から利用可能でしたが、snap バージョンに置き換えられる形で削除されました(コンテナ内では簡単にインストールできません)。

  3. パッケージのピン留めは機能しません。古いバージョンのパッケージはパッケージレジストリから積極的に削除されるためです。例えば: apt install -y curl=7.68.0-1ubuntu2.20 今日は動作するかもしれませんが、curl の新バージョンがリリースされると失敗します。

StableBuild は、Ubuntu、Debian、Alpine Linux の完全なパッケージレジストリの日次コピーを作成することで、これらの問題をすべて解決します。さらに、他者が運営する最も人気のあるレジストリも含まれます。パッケージリストを特定の日付にピン留めでき、上流でパッケージが変更または削除されても、常に同じパッケージが返されます。Ubuntu の例:

ARG SB_API_KEY=your-api-key
ARG APT_PIN_DATE=2023-11-10T10:40:01Z

# StableBuildをパッケージレジストリとして使用するようOSを設定
COPY ./sb-apt.sh /opt/sb-apt.sh
RUN bash /opt/sb-apt.sh load-apt-sources ubuntu

# 通常どおりパッケージをインストール(常にcurl 7.68.0がインストールされます)
RUN apt update && apt install -y curl

2023年9月6日(Ubuntu/Debian)および2023年12月17日(Alpine)までさかのぼった日次コピーがあります。レジストリはこちらで閲覧できます:http://debmirror.stablebuild.com/arrow-up-right

以上です。パッケージリストは安定した信頼性の高いものになりました。🎉

ミラーリングしているリポジトリ

以下のリポジトリがミラーリングされています:

Ubuntu(18.04、20.04、22.04、24.04):

Ubuntu 18.04 のパッケージは 2025年12月7日以前のミラーでのみ利用可能です。

Debian(10、11、12、13)

Debian 10 のパッケージは 2025年12月7日以前のミラーでのみ利用可能です。

Alpine Linux(3.16 以降)

ダッシュボードで読み込むソースを簡単に設定できます。ナビゲーションバーで OS を選択し、UI の指示に従ってください。

StableBuild ダッシュボードでミラーするリポジトリを選択

他の(公開されている)リポジトリのミラーリングも喜んで対応します。support@stablebuild.comenvelope までメールをお送りください。追加します。

既存のアーティファクト管理ツールについて

既存のアーティファクト管理ツールは、インストールするパッケージを調べ、対応する .deb または .apk ファイルをダウンロードしてミラーリングし、パッケージマネージャーの代わりにそれらのファイルをインストールすることで問題に対処しようとします。これは動作しますが、いくつかの点で問題があります:

  1. パッケージリストを変更したい場合。例えば、curl 7.65 がキャッシュにあるとします。数ヶ月後に新しいパッケージを追加したいが、キャッシュにはなく、現在のバージョンは curl 7.69 に依存しています(古いバージョンはレジストリから削除済み)。このとき既存のパッケージリストも更新する必要があり、アプリケーションが壊れる可能性があります。

  2. アーキテクチャを変更したい場合。x86 パッケージがキャッシュされているが、開発者が macOS に移行しようとしています。aarch64 パッケージがキャッシュにないため、すべての依存関係を完全に更新する必要があります。

StableBuild は完全な過去のパッケージレジストリを保持しているため、これらは問題になりません。apt install リストに新しいパッケージを追加するだけで、curl 7.65 と互換性のあるバージョンが取得されます。また、すべてのアーキテクチャをミラーリングしているため、aarch64 や armv7 でも同じコマンドを実行でき、そのアーキテクチャ用の同じパッケージリストが返されます。

アプリケーション固有の注意事項

Ubuntu への Chromium のインストール

Chromium はかつて Ubuntu システムで apt から利用可能でしたが、現在は次のエラーが表示されます:

StableBuild は Debian レジストリから apt 互換バージョンの Chromium をインストールすることでこれを解決します。「含めるパッケージリポジトリ」で「Chromium」を選択し、指示に従ってください。その後、apt で Chromium を再びインストールできます(Ubuntu 20.04 での実行例):

Chromium の正確なバージョンはピン留め日付によって異なります。

例:

chromedriver をインストールするには(例:インテグレーションテストの実行):

ヒントとコツ

apt ソースを手動で変更する

sb-apt.sh を使用する必要はありません。sources.list ファイルを手動で更新することもできます。ソース行は通常次のようになります:

最も簡単な方法は、お好みのエディタで sb-apt.sh を開くことです。すべてのサポートされているリポジトリのソース行をどのように追加しているかを確認できます。

最終更新