:B~ 設定の管理

1~managing-a-configuration 設定の管理

この章では live-build ソフトウェアと Live イメージ自体の両方について、最初の作成から継続的な改訂、継続的なリリースを通して Live
設定を管理する方法を説明します。

2~ 設定変更への対応

Live 設定が最初の試行で全て上手くいくのはまれです。一度だけビルドするのならコマンドラインから #{lb config}#
オプションを渡すだけで済むかもしれませんが、満足のいくまでオプションを改訂してビルドを繰り返す方が標準的です。そうした変更を支援するには設定を確実に一貫した状態に保つ自動化スクリプトが必要となるでしょう。

3~ 自動化スクリプトを使う理由は? それは何をするもの?

#{lb config}# コマンドに渡されたオプションはされている他の多数のオプションと共にデフォルト値として #{config/*}#
ファイルに保管されます。その後に #{lb config}#
を実行した場合最初のオプションを基にしてデフォルトのオプションはリセットされません。そのため、例えば #{--binary-images}#
に新しい値を指定して再び #{lb config}#
を実行した場合以前指定していた種類のイメージに依存しているオプションのデフォルト値は新しく指定した種類のイメージでは使えなくなるかもしれません。そのファイルが読み取りや変更の対象からも外れているかもしれません。これを使うと100以上のオプションの値を保管するため、実際に指定されたオプションを誰でも確認できます。最後に、#{lb
config}# を実行した後に live-build をアップグレードして、オプションの名前が変更されていた場合、#{config/*}#
には古いオプションが有効ではなくなった後に名付けられた変数も収録されます。

以上に挙げた理由により #{auto/*}# スクリプトにより楽が出来るようになります。このスクリプト群は #{lb config}# や #{lb
build}#、#{lb clean}# コマンドの単純なラッパーで、設定の管理を支援するように設計されています。#{auto/config}#
スクリプトは #{lb config}# コマンドと希望したオプションを全て保管し、#{auto/clean}#
スクリプトは設定用変数値を収録するファイルを削除し、#{auto/build}# スクリプトは各ビルドの #{build.log}#
を維持します。このスクリプト群はそれぞれ対応する #{lb}#
コマンドの実行時に自動的に実行されます。このスクリプト群を利用することで設定が見やすくなり、改訂を越えて内部的に一貫した状態が維持されます。また、更新された文書を読んだ後に
live-build をアップグレードすれば変更の必要があるオプションを識別、修正するのははるかに容易になるでしょう。

3~ 自動化スクリプトの使用例

便宜のため live-build
には例の自動化シェルスクリプトが付属していてコピーして編集できるようになっています。デフォルトの設定を新しく作成してから例をコピーしましょう:

code{

 $ mkdir mylive && cd mylive && lb config
 $ mkdir auto
 $ cp /usr/share/doc/live-build/examples/auto/* auto/

}code

#{auto/config}# を編集して、希望に合わせてオプションを追加します。例えば:

code{

 #!/bin/sh
 lb config noauto \
     --architectures i386 \
     --linux-flavours 686-pae \
     --binary-images hdd \
     --mirror-bootstrap http://ftp.ch.debian.org/debian/ \
     --mirror-binary http://ftp.ch.debian.org/debian/ \
     "${@}"

}code

これで、#{lb config}# を使うたびに #{auto/config}#
がそのオプションを基にして設定をリセットします。オプションを変更したいときには #{lb config}#
に渡すのではなくこのファイルに書かれているものを編集します。#{lb clean}# を使うと #{auto/clean}# は
#{config/*}# ファイルを、ビルドした他のものとあわせて削除します。最後に、#{lb build}# を使うとビルド時のログは
#{auto/build}# により #{build.log}# に書かれます。

*{注意:}* ここで特別な #{noauto}# パラメータを使い、#{auto/config}# を別に呼び出すことのないようにして無限再帰を回避しています。編集時に不注意で削除することのないようにしてください。また、読みやすくするために上記の例で示したように #{lb config}# コマンドを複数行に分割する場合は次の行に続く各行末のバックスラッシュ (\) を忘れることのないようにしてください。

2~clone-configuration-via-git Git経由で公開されている設定の複製

#{lb config --config}# オプションを使って Live
システムの設定を収録しているGitリポジトリを複製します。${project}により保守されている設定を基にしたい場合は
http://http://anonscm.debian.org/cgit/debian-live/ の #{Packages}# カテゴリーの #{live-images}#
という名前のリポジトリに目を通してみてください。このリポジトリには Live システムの
{ビルド済みイメージ}#downloading-prebuilt-images 用の設定を収録しています。

例えば標準的なイメージをビルドするには #{live-images}# リポジトリを使って

code{

 $ mkdir live-images && cd live-images
 $ lb config --config git://http://anonscm.debian.org/git/debian-live/live-images.git
 $ cd images/standard

}code

のようにし、必要に応じて #{auto/config}# やその他 #{config}# ツリーにあるものを必要なだけ編集します。例えば非公式の
non-free ビルド済みイメージは単純に #{--archive-areas "main contrib non-free"}#
を追加することで作成されます。

オプションとしてGit設定でショートカットを定義することもできます。#{${HOME}/.gitconfig}# に

code{

 [url "git://http://anonscm.debian.org/git/debian-live/"]
         insteadOf = lso:

}code

を追加すると #{debian-live.alioth.debian.org}# にあるgitリポジトリのアドレスを指定する必要があるところで #{lso:}#
を使えるようになります。さらにオプションで末尾の #{.git}# も省くと、この設定を使って新しいイメージの作成を始めるのはこれだけ簡単になります:

code{

 $ lb config --config lso:live-images

}code

#{live-images}#
リポジトリ全体を複製すると数種類のイメージの設定を取得します。最初のイメージが出来上がってから異なるイメージをビルドしたい場合は別のディレクトリに移動して繰り返し、必要に応じて変更を加えてください。

どの場合も、イメージのビルド #{lb build}# は毎回スーパーユーザで行う必要があることを覚えておいてください。
