> For the complete documentation index, see [llms.txt](https://stablebuild.gitbook.io/ja/llms.txt). Markdown versions of documentation pages are available by appending `.md` to page URLs; this page is available as [Markdown](https://stablebuild.gitbook.io/ja/mirtokyasshu/os-package-registry-ubuntu-debian-alpine.md).

# 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/>

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

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

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

**Ubuntu（18.04、20.04、22.04、24.04）：**

* [公式 Ubuntu パッケージリポジトリ](https://packages.ubuntu.com)（amd64、arm64、armhf）
* [Nvidia CUDA リポジトリ](https://developer.download.nvidia.com/compute/cuda/repos/)（amd64、arm64）
* [Deadsnakes PPA](https://launchpad.net/~deadsnakes/+archive/ubuntu/ppa)（最新 Python バージョン、amd64、arm64、armhf）
* [NodeSource PPA](https://deb.nodesource.com)（最新 Node.js バージョン、amd64、arm64、armhf）
* [Docker CE PPA](/ja/mirtokyasshu/os-package-registry-ubuntu-debian-alpine.md)（Docker コミュニティエディション、amd64、arm64、armhf）
* Chromium（公式 Debian パッケージリポジトリより、amd64、arm64）
* [PostgreSQL PPA](https://wiki.postgresql.org/wiki/Apt)（最新 PostgreSQL バージョン、amd64、arm64）
* [Ubuntu Toolchain test builds PPA](https://launchpad.net/~ubuntu-toolchain-r/+archive/ubuntu/test)（gcc などの新しいツールチェーン、amd64、arm64、armhf）
* [ROS1 PPA](http://packages.ros.org/ros/ubuntu)（Robot Operating System パッケージ、amd64、arm64、armhf）
* [Qualcomm IoT PPA](https://launchpad.net/~ubuntu-qcom-iot/+archive/ubuntu/qcom-ppa)（Qualcomm AI および IoT ソフトウェア、arm64）

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

**Debian（10、11、12、13）**

* [公式 Debian パッケージリポジトリ](https://www.debian.org/distrib/packages)（amd64、arm64、armhf）
* [NodeSource PPA](https://deb.nodesource.com)（最新 Node.js バージョン、amd64、arm64、armhf）
* [Docker CE PPA](/ja/mirtokyasshu/os-package-registry-ubuntu-debian-alpine.md)（Docker コミュニティエディション、amd64、arm64、armhf）

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

**Alpine Linux（3.16 以降）**

* [公式 Alpine Linux パッケージリポジトリ](https://pkgs.alpinelinux.org/packages)（全アーキテクチャ）

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

<figure><img src="/files/13srtloVif1fYyAyT4bS" alt=""><figcaption><p>StableBuild ダッシュボードでミラーするリポジトリを選択</p></figcaption></figure>

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

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

既存のアーティファクト管理ツールは、インストールするパッケージを調べ、対応する `.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 から利用可能でしたが、現在は次のエラーが表示されます：

```
Command '/usr/bin/chromium-browser' requires the chromium snap to be installed.
Please install it with:

snap install chromium
```

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

```
$ apt install -y chromium
...
$ chromium --version
Chromium 120.0.6099.224 built on Debian 11.8, running on Debian bullseye/sid
```

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

例：

* [`2023-11-10T10:40:01Z`](https://debmirror.stablebuild.com/2023-11-10T10:40:01Z/deb.debian.org/debian/pool/main/c/chromium/) には Chromium 116 が含まれます。
* [`2023-09-30T10:40:01Z`](https://debmirror.stablebuild.com/2023-09-30T10:40:01Z/deb.debian.org/debian/pool/main/c/chromium/) には Chromium 114 が含まれます。

chromedriver をインストールするには（例：インテグレーションテストの実行）：

```
$ apt install -y chromium-driver
...
$ chromedriver --version
ChromeDriver 120.0.6099.224 (3587067cafd6f5b1e567380acb485d96e623ef39-refs/branch-heads/6099@{#1761})
```

### ヒントとコツ

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

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

```
deb [trusted=yes] http://your-domain.debmirror.stablebuild.com/2023-11-19T10:40:01Z/archive.ubuntu.com/ubuntu/ focal main restricted
```

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