リポジトリ管理
apt がどこからパッケージを取ってくるのかは、設定ファイルに書かれています。試験で問われるのは、取得元をどのファイルに書くかという場所と、行の各フィールドが何を表すかという書式の2つです。Debian 系なら /etc/apt/sources.list と /etc/apt/sources.list.d/ 配下、RPM 系なら /etc/yum.repos.d/ 配下という対応は、そのまま覚えてください。
従来形式は左から4つのフィールド
/etc/apt/sources.list および /etc/apt/sources.list.d/*.list に書く、1行1リポジトリの古い書式です。
ターミナル
deb http://ftp.jp.debian.org/debian bookworm main contrib
deb-src http://ftp.jp.debian.org/debian bookworm main| 位置 | 名前 | 意味 |
|---|---|---|
| 1 | 種別 | deb はバイナリ、deb-src はソースパッケージ |
| 2 | URI | 取得元のアドレス |
| 3 | ディストリビューション | スイート名またはコードネーム |
| 4 以降 | コンポーネント | 区分。空白区切りで複数書ける |
コンポーネントは Debian では4つです。main はフリーソフトウェアガイドラインに適合するもの、contrib は本体はフリーだが動作に非フリーなものを要するもの、non-free はフリーでないもの、non-free-firmware は bookworm で non-free から分離されたファームウェアです。
bookworm-security のように、ディストリビューション欄にサフィックスを付けた更新用の行を別に持つのも定番です。
deb822 形式
新しい書式で、/etc/apt/sources.list.d/*.sources という拡張子のファイルにキーと値の段落形式で書きます。この演習環境の Debian 12 もこの形式で設定を持っています。
プレーンテキスト
Types: deb
URIs: http://deb.debian.org/debian
Suites: bookworm bookworm-updates
Components: main contrib non-free non-free-firmware
Signed-By: /usr/share/keyrings/debian-archive-keyring.gpgTypes が種別、URIs が URI、Suites がディストリビューション、Components がコンポーネントに当たります。1段落に複数の URI や Suite を空白区切りで並べられるので、従来形式なら数行必要だったものが1段落にまとまります。段落は空行で区切ります。
Signed-By は署名を検証する公開鍵の置き場所です。かつての apt-key add は鍵を1つの束にまとめるため、すべてのリポジトリを無差別に信頼してしまい非推奨になりました。現在は鍵ファイルを /usr/share/keyrings/ などに置き、Signed-By や従来形式の [signed-by=...] でそのリポジトリだけに効くように結び付けます。
RPM 系との対比
/etc/yum.repos.d/ の下に、拡張子 .repo の INI 形式ファイルを置きます。
プレーンテキスト
[baseos]
name=AlmaLinux 9 BaseOS
baseurl=https://repo.almalinux.org/almalinux/9/BaseOS/x86_64/os/
enabled=1
gpgcheck=1
gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-AlmaLinux角括弧の中がリポジトリ ID、name が説明、baseurl が取得元、enabled が有効かどうか、gpgcheck と gpgkey が署名検証の設定です。baseurl の代わりに mirrorlist を書く形も一般的です。apt の Signed-By に当たるのが gpgkey です。
よくある引っかけ
sources.list.d に置くファイルは拡張子で形式が決まります。.list なら従来形式、.sources なら deb822 形式で、拡張子が違うと読まれません。
設定ファイルを書き換えただけでは何も起こりません。apt update を実行して初めて各リポジトリの索引が取得され、キャッシュが更新されます。ただし apt update が更新するのは索引だけで、ソフトを新しくするのは apt upgrade です。
deb-src はソースパッケージ用の行で、バイナリを入れるだけなら要りません。鍵の扱いも apt-key から Signed-By へ移っています。