Live manual Debian Live

# Debian Live Manual

# インストールするパッケージの独自化

367

# 8. インストールするパッケージの独自化

368

恐らく Live システムの最も基本的な独自化はイメージに収録するパッケージの選択でしょう。この章では live-build でのパッケージのインストールの独自化のためのビルド時の様々なオプションを見ていきます。イメージへのインストールに利用可能なパッケージに関して最も影響が大きい選択はディストリビューションとアーカイブ領域です。まともなダウンロード速度を確保するため、近いディストリビューションミラーを選択してください。backports や experimental あるいは独自のパッケージのある自身専用のリポジトリを追加することもできます。また、ファイルを直接パッケージとして収録することもできます。特定のデスクトップや言語のパッケージ等、多数の関連パッケージを同時にインストールするメタパッケージを含め、パッケージ一覧は定義できます。最後に、ビルドでパッケージをインストールするときに apt や好みにより aptitude を制御するオプションもいくらかあります。プロキシを使っていたり、推奨パッケージのインストールを無効にして容量を節約したい、インストールするパッケージのバージョンをAPTのピン経由で制御する必要がある、等便利だと思う場面があるかもしれません。

369

8.1 パッケージソース

370

8.1.1 ディストリビューション、アーカイブ領域とモード

371

The distribution you choose has the broadest impact on which packages are available to include in your live image. Specify the codename, which defaults to testing. Any current distribution carried in the archive may be specified by its codename here. (See Terms for more details.) The `--distribution` option not only influences the source of packages within the archive, but also instructs live-build to enable other sources.

372

For example, to build against the stable release, with security, updates (enabled per default) and additionally proposed-updates and backports, specify:

373

$ lb config --distribution stable --proposed-updates true --backports true

374

Similarly, for the unstable release, sid, which has neither security nor updates, specify:

375

$ lb config --distribution sid

376

のように指定します。ディストリビューションアーカイブ内で、アーカイブ領域はアーカイブを大きく分類します。Debian では#{main}#、`contrib`、`non-free` となっています。`main`に収録されるソフトウェアだけが Debian ディストリビューションの一部であり、したがってそれがデフォルトとなっています。複数指定することもできます。例えば

377

$ lb config --archive-areas "main contrib non-free"

378

Debian 派生物によっては `--mode` オプションの実験的サポートが利用できるものがあります。このオプションは Debian または未知のシステムでビルドしている場合にのみデフォルトで `debian` がセットされています。サポートしている派生物のどれかで `lb config` を実行した場合のデフォルト値はその派生物のイメージを作成するための値になります。`lb config` を例えば `ubuntu` モードで実行すると Debian 向けに代えて指定された派生物のディストリビューション名やアーカイブ領域がサポートされます。このモードはその派生物に合うように live-build の挙動も変更します。

379

注意: モードを追加したプロジェクトの設定については主にそのオプションのサポートユーザの担当です。Debian Live Projectは最善の努力をもって開発サポートを提供はしますが、私たちは派生物を自ら開発あるいはサポートしているわけではないため、あくまで派生物プロジェクトからのフィードバックが基になります。

380

8.1.2 ディストリビューションミラー

381

Debian アーカイブは世界中の巨大なネットワークミラーにまたがって複製されているため、各地域の人が最高のダウンロード速度を求めて近いミラーを選択できます。`--mirror-*` オプションはそれぞれ、ビルドの様々な段階でどのディストリビューションミラーを利用するのかを決定します。 ビルド段階 の繰り返しになりますが*{パッケージ収集}*段階は最小限のシステムで debootstrap により最初に chroot を構成する段階、chroot 段階は chroot を使って Live システムのファイルシステムをビルドする段階です。ミラーはこの各段階ごとにそれぞれのオプションで指定するため*{バイナリ}*の段階では `--mirror-binary` や `--mirror-binary-security` の値が採用され、早い段階で使っていたミラーは置き換えられることになります。

382

8.1.3 ビルド時に利用するディストリビューションミラー

383

ビルド時に利用するディストリビューションミラーにローカルミラーを指定するには、`--mirror-bootstrap` と `--mirror-chroot-security` を以下のように指定するだけです。

384

$ lb config --mirror-bootstrap http://localhost/debian/ \
--mirror-chroot-security http://localhost/debian-security/

385

`--mirror-chroot` で指定する chroot ミラーのデフォルト値は `--mirror-bootstrap` の値になっています。

386

8.1.4 実行時に利用するディストリビューションミラー

387

The `--mirror-binary*` options govern the distribution mirrors placed in the binary image. These may be used to install additional packages while running the live system. The defaults employ `deb.debian.org`, a service that chooses a geographically close mirror based, among other things, on the user's IP family and the availability of the mirrors. This is a suitable choice when you cannot predict which mirror will be best for all of your users. Or you may specify your own values as shown in the example below. An image built from this configuration would only be suitable for users on a network where "`mirror`" is reachable.

388

$ lb config --mirror-binary http://mirror/debian/ \
--mirror-binary-security http://mirror/debian-security/ \
--mirror-binary-backports http://mirror/debian-backports/

389

8.1.5 追加リポジトリ

390

リポジトリをさらに追加して、利用できるパッケージ選択の幅を対象ディストリビューション以外にも広げられます。それにより、例えば backports や experimental、そして独自のパッケージを利用できます。追加のリポジトリを設定するには `config/archives/your-repository.list.chroot` や `config/archives/your-repository.list.binary` ファイルを作成します。`--mirror-*` オプションにより、イメージのビルドの chroot 段階や*{バイナリ}*段階、つまり Live システムの実行時に利用するリポジトリを決定できます。

391

例えば `config/archives/live.list.chroot` により Live システムのビルド時に debian-live スナップショットリポジトリからパッケージをインストールできます。

392

deb http://debian-live.alioth.debian.org/ sid-snapshots main contrib non-free

393

同一の行を `config/archives/live.list.binary` に追加すると、Live システムの `/etc/apt/sources.list.d/` ディレクトリにそのリポジトリが追加されます。

394

こういったファイルが存在すれば自動的に処理されます。

395

You should also put the ASCII-armored GPG key used to sign the repository into `config/archives/your-repository.key.{binary,chroot}` files.

396

APTのピン止めが独自に必要な場合、APT設定行等を `config/archives/your-repository.pref.{binary,chroot}` ファイルに配置すれば自動的に Live システムの `/etc/apt/preferences.d/` ディレクトリに追加されます。

397

Similarly, if you need custom APT_AUTH.CONF(5) authentication configuration, this can be placed in `config/archives/your-repository.auth.{binary,chroot}` files and will be automatically added to your live system's `/etc/apt/auth.conf.d/` directory

398

8.2 インストールするパッケージの選択

399

There are a number of ways to choose which packages live-build will install in your image, covering a variety of different needs. You can simply name individual packages to install in a package list. You can also use metapackages in those lists, or select them using package control file fields. And finally, you may place package files in your `config/` tree, which is well suited to testing of new or experimental packages before they are available from a repository.

400

8.2.1 パッケージ一覧

401

パッケージ一覧はインストールするパッケージを明確にする強力な方法です。一覧の構文では条件付けをサポートし、一覧の生成や複数の設定への適合を容易にしています。ビルド時にシェルヘルパーを使って一覧にパッケージ名を差し込むこともできます。

402

注意: 存在しないパッケージが指定されたときの live-build の挙動はAPTユーティリティの選択により決定されます。さらなる詳細については apt と aptitude の選択 を見てください。

403

8.2.2 メタパッケージの利用

404

パッケージ一覧を指示するもっとも簡単な方法は利用するディストリビューションで保守されているタスクのメタパッケージの利用です。例えば:

405

$ lb config
$ echo task-gnome-desktop > config/package-lists/desktop.list.chroot

406

This supersedes the older predefined list method supported in `live-build` 2.x. Unlike predefined lists, task metapackages are not specific to the Live System project. Instead, they are maintained by specialist working groups within the distribution and therefore reflect the consensus of each group about which packages best serve the needs of the intended users. They also cover a much broader range of use cases than the predefined lists they replace.

407

タスクのメタパッケージには全て先頭が `task-` から始まるため、利用できるものを簡単に判別する方法があります (名前が該当しても実際にはメタパッケージではないものもほんの一部とはいえありますが)。パッケージ名を前方一致で検索します:

408

$ apt-cache search --names-only ^task-

409

以上に加え、他に様々な目的を持ったメタパッケージを見つけられるでしょう。`gnome-core` のように他のもっと範囲の広いタスクパッケージの一部を構成するものや、`education-*` メタパッケージのように Debian Pure Blend の中のある個々の専門分野に特化したものもあります。アーカイブにある全メタパッケージを列挙するには、`debtags` パッケージをインストールして `role::metapackage` タグの付けられたパッケージを全て列挙させます:

410

$ debtags search role::metapackage

411

8.2.3 ローカルパッケージ一覧

412

列挙したものがメタパッケージであれ、個々のパッケージであれ、両方の組み合わせであれ、ローカルパッケージ一覧は全て `config/package-lists/` に保存されます。この一覧は複数利用できるため、うまい具合にこの一覧自体を組み込める設計になっています。例えばある一覧は特定のデスクトップ選択時向け、別の一覧は異なるデスクトップでも簡単に使えるような関連パッケージ群を、というようにできます。これにより、パッケージ群の異なる組み合わせを最小限の手間で試したり、あるいは異なる Live イメージプロジェクトで一覧を共有する、といったことが可能になります。

413

このディレクトリに存在するパッケージ一覧は、処理対象とするためには後ろに `.list` を付ける必要があり、さらにその一覧をどの段階の対象とするのか示すためには `.chroot` や `.binary` をその後に追加します。

414

The packages in the `.list.chroot_install` list are present both in the live system and in the installed system.

415

注意: 対象とする段階の指定を追加しない場合、その一覧は両方の段階で利用されます。通常指定するのは `.list.chroot` で、この場合そのパッケージは Live ファイルシステムにのみインストールされ、メディア上に `.deb` の余計なコピーは置かれません。

416

8.2.4 ローカルバイナリパッケージ一覧

417

バイナリ段階の一覧を作成する場合はファイルの末尾を `.list.binary` にして `config/package-lists/` に置きます。それにより指定したパッケージは Live ファイルシステムにはインストールされず、Live メディアの `pool/` 以下に収録されます。Live ではないインストーラでこういった一覧を標準的に利用しているものもあります。バイナリ段階で chroot 段階と同一の一覧を利用したい場合は上述したように末尾を `.list` とします。

418

8.2.5 生成されたパッケージ一覧

419

一覧の構成はスクリプトで生成するのが最善の方法だということもあります。感嘆符から始まる行は全て、そのコマンドがイメージのビルド後に chroot 内で実行されることを示します。例えばパッケージ一覧に `! grep-aptavail -n -sPackage -FPriority standard | sort` という行を書いておけば、`Priority: standard` で利用可能なパッケージをソートした一覧を生成できます。

420

実際、パッケージの選択に `grep-aptavail` コマンド (`dctrl-tools` パッケージに収録) はとても有用なので、`live-build` では便宜のため `Packages` 補助スクリプトを提供しています。このスクリプトは引数を#{フィールド}#と#{パターン}#の2つ取ります。一覧を作成する例:

421

$ lb config
$ echo '! Packages Priority standard' > config/package-lists/standard.list.chroot

422

8.2.6 条件付き内部パッケージ一覧の利用

423

`config/*` (`LB_` が先頭に付くものは除く) に保存された live-build の設定変数はどれもパッケージ一覧の条件文で利用できます。一般には `lb config` オプションを大文字に、ダッシュ文字をアンダースコアに変更したものになります。しかし実際に意味があるのは、パッケージ選択に関わるもの、例えば `DISTRIBUTION` や `ARCHITECTURES`、`ARCHIVE_AREAS` だけです。

424

例えば `--architectures amd64` が指定された場合に `ia32-libs` をインストールする場合:

425

#if ARCHITECTURES amd64
ia32-libs
#endif

426

任意の1つを条件の値とすることもできます。`--architectures i386` または `--architectures amd64` のどちらかが指定された場合に memtest86+ をインストールする場合の例:

427

#if ARCHITECTURES i386 amd64
memtest86+
#endif

428

値を複数指定できる変数を条件にすることもできます。`--archive-areas` で `contrib` または `non-free` のどちらかが指定されている場合に vrms をインストールする場合の例:

429

#if ARCHIVE_AREAS contrib non-free
vrms
#endif

430

入り組んだ条件分岐はサポートしていません。

431

8.2.7 インストール時のパッケージの削除

432

`config/package-lists` ディレクトリの末尾が `.list.chroot_live` や `.list.chroot_install` のファイルにパッケージを列挙できます。Live 用とインストール用の両方の一覧が存在する場合、`.list.chroot_live` に列挙されているパッケージは (ユーザがインストーラを利用している場合) インストール後にフックにより削除されます。`.list.chroot_install` に列挙されているパッケージは Live システムとインストールされたシステムの両方に存在することになります。これはインストーラ向けの特別な調整で、設定で `--debian-installer live` をセットしている場合や Live システム特有のパッケージをインストール時には削除したい場合に有用かもしれません。

433

8.2.8 Summary

434

The table below shows which configuration files are required to achieve the desired availability of the package.

435

| X.chroot | X.chroot_live | X | X.binary
--- | --- | --- | --- | ---
Package is installed in the live system | Yes | Yes | Yes | No
Package is removed after installing the live system | No | Yes | No | N/A
Package can be installed from the live system without network | N/A | N/A | Yes *1 | Yes

436

*1: Because the installer needs this package

437

`X` = `config/package-lists/custom_name.list`

438

8.2.9 デスクトップ及び言語タスク

439

デスクトップと言語のタスクは特別で、計画性や設定が追加で必要となります。Live イメージが Debian インストーライメージとは異なる点です。Debian インストーラでは、特定のデスクトップ環境向けに用意されたメディアでは対応するタスクは自動的にインストールされます。内部に `gnome-desktop` や `kde-desktop`、`lxde-desktop`、`xfce-desktop` タスクがあり、`tasksel` のメニューにはどれも出てきません。同様に言語向けタスクのメニュー項目はありませんが、インストール中にユーザが選択した言語が対応する言語タスクの選択に影響します。

440

デスクトップ向け Live イメージ開発時には、イメージは通常動作するデスクトップを直接ブートし、デスクトップやデフォルト言語はどちらも Debian インストーラの場合のように実行時に選択するのではなくビルド時に決められています。これは Live イメージでデスクトップや言語を複数サポートしてユーザに選択の機会を与えるようにできないわけではなく、それが live-build のデフォルトの挙動ではないというだけです。

441

言語特有のフォントや入力メソッドにどのパッケージを収録するのか、といった規定は言語タスクにはないので、特定のパッケージを収録したい場合は設定で指定する必要があります。ドイツ語サポートを収録した GNOME デスクトップイメージの場合に収録するタスクのメタパッケージの例:

442

$ lb config
$ echo "task-gnome-desktop task-laptop" >> config/package-lists/my.list.chroot
$ echo "task-german task-german-desktop task-german-gnome-desktop" >> config/package-lists/my.list.chroot

443

8.2.10 カーネルのフレーバー (種類) とバージョン

444

アーキテクチャによっては、イメージに複数のカーネルをデフォルトで収録することができます。フレーバーは `--linux-flavours` オプションで選択できます。各フレーバーはデフォルトの短い `linux-image` に、イメージに収録される実際のカーネルパッケージに依存する各メタパッケージの名前を付加した形式になります。

445

そうして、デフォルトで `amd64` アーキテクチャのイメージは `linux-image-amd64` のメタパッケージを収録し、`i386` アーキテクチャのイメージは `linux-image-586` メタパッケージを収録します。

446

設定したアーカイブで複数バージョンのカーネルパッケージが利用できる場合、`--linux-packages` オプションでカーネルパッケージ名の前半部を指定できます。例えば `amd64` アーキテクチャのイメージをビルドする際にテスト用に experimental アーカイブを追加すると `linux-image-3.18.0-trunk-amd64` カーネルをインストールできます。そのイメージの設定例:

447

$ lb config --linux-packages linux-image-3.18.0-trunk
$ echo "deb http://deb.debian.org/debian/ experimental main" > config/archives/experimental.list.chroot

448

8.2.11 独自のカーネル

449

Debian パッケージ管理システムに組み入れられていれば、独自のカーネルを自分でビルド、収録できます。live-build システムは `.deb` パッケージでビルドされていないカーネルはサポートしていません。

450

自身のカーネルパッケージを配置するための適切で推奨する方法は `kernel-handbook` の指示に従うことです。パッケージ名のABIとフレーバーの部分を忘れずに適切に変更し、リポジトリに `linux` の完全なビルドとそれに該当する `linux-latest` パッケージを収録してください。

451

該当するメタパッケージ無しでカーネルパッケージをビルドしたい場合は、 カーネルのフレーバー (種類) とバージョン で説明しているように `--linux-packages` でパッケージ名の適切な前半部を指定する必要があります。 変更したあるいはサードパーティ製パッケージのインストール で説明しているように、自身のリポジトリに独自のカーネルパッケージを収録する場合はそのようにするのが最善ですが、別の方法についても説明しています。

452

カーネルを独自化する方法はこの文書の対象範囲ではありません。とはいえ、設定が最低限満たさないといけない要件があります:

453

- 初期RAMディスクを利用する。

454

- Include the union filesystem module (i.e. usually `OverlayFS`).

455

- 自分の設定で必要とする他のファイルシステムモジュール (つまり通常は `squashfs`) があればそれを収録する。

456

8.3 変更したあるいはサードパーティ製パッケージのインストール

457

Live システムの哲学には反しますが、Debian リポジトリにあるバージョンのパッケージを改変して Live システムをビルドする必要に迫られることもあります。それは機能や言語、商標を変更あるいは追加するものであったり、既存のパッケージから望ましくない要素を削除するものであるかもしれません。同様に求める機能や独自開発の機能を追加するのに「サードパーティ製」パッケージを利用できます。

458

This section does not cover advice regarding building or maintaining modified packages. Joachim Breitner's 'How to fork privately' method from ‹http://www.joachim-breitner.de/blog/archives/282-How-to-fork-privately.html› may be of interest, however. The creation of bespoke packages is covered in the Debian New Maintainers' Guide at ‹https://www.debian.org/doc/manuals/maint-guide/› and elsewhere.

459

変更した独自のパッケージをインストールする方法は2つあります:

460

- `packages.chroot`

461

- 独自APTリポジトリの利用

462

`packages.chroot` を使う方法はより簡単に出来て「一度限りの」独自化には有用ですが欠点がいくつかあります。一方独自のAPTリポジトリを使う方法はその準備に時間がかかりまます。

463

8.3.1 `packages.chroot` を利用した独自のパッケージのインストール

464

独自化したパッケージをインストールするには、単に#{config/packages.chroot/}# ディレクトリにコピーします。このディレクトリ内に置かれたパッケージはビルドの際に Live システムに自動的にインストールされます - 他のどこかを指定する必要はありません。

465

パッケージ名は規定の命名規則に従わ*{ないといけません}*。それを簡単に行う方法は `dpkg-name` の利用です。

466

`packages.chroot` を利用した独自のパッケージのインストールには欠点があります:

467

- secure APT を利用することができません。

468

- `config/packages.chroot/` ディレクトリに適切なパッケージを全てインストールしないといけません。

469

- Live システムの設定をリビジョン管理するには適しません。

470

8.3.2 APTリポジトリを利用した独自パッケージのインストール

471

`packages.chroot` を使う場合とは異なり、独自のAPTリポジトリを使う場合は他のどこかでパッケージを指定する必要があります。詳細については インストールするパッケージの選択 を見てください。

472

独自のパッケージをインストールするためにAPTリポジトリを作成するのは不要な手間だと思うかもしれませんが、その基盤は変更したパッケージを後で更新する際に簡単に再利用できます。

473

The APT repository does not necessarily need to be online, you can use a local repository instead. However, in both cases the repository needs to be signed.

474

Example:

475

$ gpg --armor --output config/archives/custom_repo.gpg.key${EXTENSION} --export-options export-minimal --export ${SIGNING_KEY}
$ cat << EOF > config/archives/custom_repo.list${EXTENSION}
deb [signed-by=/etc/apt/trusted.gpg.d/custom_repo.gpg.key${EXTENSION}.asc] ${URI} ${SUITE} ${COMPONENTS}
EOF
$ echo "${PACKAGES_FROM_REPOSITORY}" > config/package-lists/custom_repo.list${EXTENSION}

476

Where:

477

- `${EXTENSION}` : the optional stage suffix, see the summary

478

- `${SIGNING_KEY}`: the keyID of the signature of the repository

479

- `${URI}`: the URI to the repository, e.g. `http://deb.debian.org/debian/` or `file://$(pwd)/my_local_repository`

480

- `${SUITE}`: the suite within the repository, e.g. `my-debian-based-distro`

481

- `${COMPONENTS}`: the components within the repository, e.g. `main`

482

- `${PACKAGES_FROM_REPOSITORY}`: the names of the packages to install (dependencies will automatically be installed as well)

483

8.3.3 独自パッケージとAPT

484

live-build は Live システムへのパッケージのインストールに全てAPTを利用するため、そのプログラムの挙動を引き継ぎます。関連する一例としては (デフォルト設定だと仮定して)、異なる2つのリポジトリでバージョン番号の異なるあるパッケージが利用可能な場合に、APTはバージョン番号の大きい方のパッケージをインストールに選択します。

485

そのため、独自パッケージの `debian/changeLog` ファイルでバージョン番号を増加させ、公式の Debian リポジトリにあるものよりも変更したバージョンが確実にインストールされるようにすると良いでしょう。Live システムのAPTのピン設定を改変する方法もあります - さらなる情報については、 APTのピン止め を見てください。

486

8.4 ビルド時のAPT設定

487

ビルド時だけに適用されるオプションを使ってAPTを設定できます (実行中の Live システムで利用されるAPTの設定は Live システムの内容による通常の、`config/includes.chroot/` で適切な設定を収録する) 方法により設定できます。オプションの全容については `lb_config` man ページの `apt` で始まるオプションを見てください。

488

8.4.1 apt と aptitude の選択

489

ビルド時にパッケージをインストールする際に apt と aptitude のどちらを利用するのか選択できます。利用するユーティリティは `lb config` の `--apt` 引数で決定します。パッケージが欠けている場合の処理方法に顕著な違いがあることに着目し、パッケージのインストール時に望ましい挙動を実装している方を選択してください。

490

- `apt`: この方法では、欠けているパッケージが指定された場合にそのパッケージのインストールは失敗します。これはデフォルトの設定です。

491

- `aptitude`: この方法では、欠けているパッケージが指定された場合にそのパッケージのインストールは成功します。

492

8.4.2 APTでのプロキシの利用

493

One commonly required APT configuration is to deal with building an image behind a proxy. You may specify your APT proxy with the `--apt-http-proxy` option as needed, e.g.

494

$ lb config --apt-http-proxy http://proxy/

495

8.4.3 APTの調整による容量節約

496

イメージのメディアの容量をいくらか節約する必要があるかもしれません。その場合は以下に挙げるオプションを利用するといいかもしれません。

497

APTの索引をイメージに収録したくない場合は除外できます:

498

$ lb config --apt-indices false

499

これは `/etc/apt/sources.list` 内の項目には影響せず、単に `/var/lib/apt` に索引ファイルを収録するかどうかだけに影響します。その代わりに、Live システムでAPTを操作するためにはこの索引が必要なので、`apt-cache search` や `apt-get install` を実行する前にユーザは例えば `apt-get update` をまず実行して索引を作成しないといけません。

500

推奨パッケージのインストールによりイメージが肥大化しているような場合、以下で説明している影響を踏まえた上でAPTのデフォルトオプションを無効にできます:

501

$ lb config --apt-recommends false

502

The most important consequence of turning off recommends is that `live-boot` and `live-config` themselves recommend some packages that provide important functionality used by most Live configurations.

503

Two packages which you most probably will want to add again are:

504

- `user-setup` which `live-config` recommends is used to create the live user.

505

- `sudo` which `live-config` recommends is used to obtain root access in the live-image, which is needed to shutdown the computer.

506

$ lb config --apt-recommends false
$ echo "user-setup sudo" > config/package-lists/recommends.list.chroot

507

In all but the most exceptional circumstances you need to add back at least some of these recommends to your package lists or else your image will not work as expected, if at all. Look at the recommended packages for each of the `live-*` packages included in your build and if you are not certain you can omit them, add them back into your package lists.

508

The more general consequence is that if you don't install recommended packages for any given package, that is, "packages that would be found together with this one in all but unusual installations" ( Debian Policy Manual, section 7.2 ), some packages that users of your Live system actually need may be omitted. Therefore, we suggest you review the difference turning off recommends makes to your packages list (see the `binary.packages` file generated by `lb build`) and re-include in your list any missing packages that you still want installed. Alternatively, if you find you only want a small number of recommended packages left out, leave recommends enabled and set a negative APT pin priority on selected packages to prevent them from being installed, as explained in APT pinning.

509

8.4.4 apt や aptitude へのオプションの受け渡し

510

障害となるAPTの挙動を変更するための `lb config` オプションがない場合、`--apt-options` や `--aptitude-options` により任意のオプションを選択したAPTツールに渡せます。詳細については `apt` や `aptitude` の man ページを見てください。どちらのオプションにも、優先設定に加えて保持しておく必要のあるデフォルト値があることに注意してください。そのため、例えば `snapshot.debian.org` からテスト用に何か取得する場合に `Acquire::Check-Valid-Until=false` を指定するとAPTは古いままの `Release` ファイルを使い続けます。以下の例のように、デフォルト値 `--yes` の後に新しいオプションを付加します:

511

$ lb config --apt-options "--yes -oAcquire::Check-Valid-Until=false"

512

このオプションを利用する場合は man ページを確認して完全に理解するようにしてください。これはあくまで例であり、イメージをこの方法で設定するようにという助言だと解釈することのないようにしてください。このオプションは例えば Live イメージの最終的なリリースには適しません。

513

`apt.conf` のオプションを利用するようなもっと複雑なAPT設定には代わりに `config/apt/apt.conf` ファイルを作成すると良いでしょう。少数ですが、よく必要とされるオプションへの有用なショートカットがあります。他の `apt-*` オプションについても参照してください。

514

8.4.5 APTのピン止め

515

背景として、`apt_preferences(5)` man ページをまず読んでください。APTのピン機能はビルド時用と実行時用に設定できます。前者については `config/archives/*.pref`、`config/archives/*.pref.chroot`、`config/apt/preferences` を、後者については `config/includes.chroot/etc/apt/preferences` を作成してください。

516

trixie の Live システムをビルドするとしましょう。その場合に必要な Live パッケージは全て、ビルド時にバイナリイメージを sid からインストールする必要があります。APTソースに sid を追加して、ピン機能で sid の Live パッケージには高い優先度をセットし、他のパッケージには全てデフォルトよりも低い優先度をセットする必要があります。そうするとビルド時に望むパッケージだけを sid からインストールし、他は全て対象システムのディストリビューションである trixie から取得します。以下によりその動作になります:

517

$ echo "deb http://mirror/debian/ sid main" > config/archives/sid.list.chroot
$ cat >> config/archives/sid.pref.chroot << EOF
Package: live-*
Pin: release n=sid
Pin-Priority: 600
Package: *
Pin: release n=sid
Pin-Priority: 1
EOF

518

別のパッケージにより推奨されたパッケージを望まない場合に、ピン機能で優先度に負の値をセットすることによりそのパッケージをインストールしないようにできます。`config/package-lists/desktop.list.chroot` で `task-lxde-desktop` を使って LXDE イメージをビルドしていて、wifi パスワードをキーリングに保存するかユーザに聞かないようにしたいと仮定しましょう。このメタパッケージは lxde-core に依存し、lxde-core は gksu を推奨し、gksu は gnome-keyring を推奨しています。そこで、推奨された gnome-keyring パッケージを除外したい場合、`config/apt/preferences` に以下を追加することで除外できます:

519

Package: gnome-keyring
Pin: version *
Pin-Priority: -1