[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
Packaging Manual 第9章
早瀬です。Packaging Manual 第9章 の作業が終りました。
翻訳のチェックをよろしくお願い致します。
--
早瀬 茂規 (shayase@xxxxxxxxxxxxxxx)
<!-- ORIG
<chapt id="conffiles"><heading>Configuration file handling
ORIG -->
<chapt id="conffiles"><heading>パッケージ構成ファイルの運用
</heading>
<p>
<!-- ORIG
<prgn>dpkg</prgn> can do a certain amount of automatic
handling of package configuration files.
ORIG -->
<prgn>dpkg</prgn> はある程度までは人手介入なしに
パッケージ構成ファイルを操作できます。
</p>
<p>
<!-- ORIG
Whether this mechanism is appropriate depends on a number of
factors, but basically there are two approaches to any
particular configuration file.
ORIG -->
そのメカニズムが妥当かどうかは、多数の要因によります。けれども、
基本的にはある特定の設定ファイルに対して二つのアプローチが
あります。
</p>
<p>
<!-- ORIG
The easy method is to ship a best-effort configuration in the
package, and use <prgn>dpkg</prgn>'s conffile mechanism to
handle updates. If the user is unlikely to want to edit the
file, but you need them to be able to without losing their
changes, and a new package with a changed version of the file
is only released infrequently, this is a good approach.
ORIG -->
簡単な方法は、パッケージ中にできうる限り最良のパッケージ
設定ファイルを含んだ形でリリースし、以降の更新には
<prgn>dpkg</prgn> の構成ファイルメカニズムを使用することです。
設定ファイルをユーザが編集することがなさそうでも、仮に
編集していた場合にはその編集が失われないようにしたい、
またはそのパッケージの新しいバージョンはそんなに頻繁には
リリースされない、そんな場合にはこれはよいアプローチです。
</p>
<p>
<!-- ORIG
The hard method is to build the configuration file from
scratch in the <prgn>postinst</prgn> script, and to take the
responsibility for fixing any mistakes made in earlier
versions of the package automatically. This will be
appropriate if the file is likely to need to be different on
each system.
ORIG -->
より複雑な方法として、設定ファイルを、
<prgn>postinst</prgn> スクリプト中でスクラッチから構築する方法が
あります。そして、パッケージの初期のバージョンからのバグを
その中で自動的にフィックスしていくようにします。これは、
構成ファイルがそれぞれのシステムによって違う場合に使用される
方法です。
</p>
<!-- ORIG
<sect><heading>Automatic handling of configuration files by
<prgn>dpkg</prgn>
ORIG -->
<sect><heading><prgn>dpkg</prgn> による設定ファイルの自動操作
</heading>
<p>
<!-- ORIG
A package may contain a control area file called
<tt>conffiles</tt>. This file should be a list of filenames
of configuration files needing automatic handling, separated
by newlines. The filenames should be absolute pathnames,
and the files referred to should actually exist in the
package.
ORIG -->
パッケージは、<tt>conffiles</tt> と呼ばれるコントロール制御
ファイルを含みます。このファイルは、改行によって区切られた、
自動設定のための設定ファイル名のリストです。リストされる
ファイル名は、絶対パスでなければいけません。また、
参照されるファイルはパッケージ中に含まれていなければ
いけません。
</p>
<p>
<!-- ORIG
When a package is upgraded <prgn>dpkg</prgn> will process
the configuration files during the configuration stage,
shortly before it runs the package's <prgn>postinst</prgn>
script,
ORIG -->
パッケージが更新されるとき、<prgn>dpkg</prgn> は、
設定の段階において、設定ファイルを処理します。設定の段階とは、
<prgn>postinst</prgn> スクリプトを実行する直前です。
</p>
<p>
<!-- ORIG
For each file it checks to see whether the version of the
file included in the package is the same as the one that was
included in the last version of the package (the one that is
being upgraded from); it also compares the version currently
installed on the system with the one shipped with the last
version.
ORIG -->
<prgn>dpkg</prgn> は、それぞれの設定ファイルについて、
パッケージに含まれているものが現在のバージョン
(つまり、今アップグレードしようとしている) のパッケージに
最初に含まれていたものと同一のものであるかをチェックします。
同時に、現在のバージョンのパッケージで最初に
提供されていたものと,現在システムにインストール
されているものとの比較も行います。
</p>
<p>
<!-- ORIG
If neither the user nor the package maintainer has changed
the file, it is left alone. If one or the other has changed
their version, then the changed version is preferred - i.e.,
if the user edits their file, but the package maintainer
doesn't ship a different version, the user's changes will
stay, silently, but if the maintainer ships a new version
and the user hasn't edited it the new version will be
installed (with an informative message). If both have
changed their version the user is prompted about the problem
and must resolve the differences themselves.
ORIG -->
ユーザとパッケージ管理者のどちらがもが設定ファイルを
変更していない場合は、設定ファイルはそのまま
インストールされます。どちらかが以前のバージョンの
設定ファイルを編集していた場合は、その編集された
バージョンが優先されます。つまり、ユーザが設定ファイルを
編集しており、パッケージ管理者が違ったバージョンを
出していなかったなら、何の報告も無しに、ユーザの変更が
そのまま残されます。けれども、パッケージ管理者が新しい
バージョンを出していて、ユーザが設定ファイルに手を加えて
いなかった場合は、新しいバージョンがインストールされます
(このとき、そのことを知らせるメッセージも表示されます)。
ユーザもパッケージ管理者も両方が設定ファイルを変更していた
場合は、ユーザが自分自身でこの問題を解決するように、入力を
促すプロンプトを出力します。
</p>
<p>
<!-- ORIG
The comparisons are done by calculating the MD5 message
digests of the files, and storing the MD5 of the file as it
was included in the most recent version of the package.
ORIG -->
この比較は、ファイル中の MD5 メッセージを計算することに
よって行なれます。そして、そのインストールされた
最新バージョンのファイル中の MD5 を同様に保存します。
</p>
<p>
<!-- ORIG
When a package is installed for the first time
<prgn>dpkg</prgn> will install the file that comes with it,
unless that would mean overwriting a file already on the
filesystem.
ORIG -->
そのパッケージのインストールが初めてだったときは、
<prgn>dpkg</prgn> は、そのファイルが、現存システムの
ファイルを上書きするものでないかぎり、そのまま
インストールします。
</p>
<p>
<!-- ORIG
However, note that <prgn>dpkg</prgn> will <em>not</em>
replace a conffile that was removed by the user (or by a
script). This is necessary because with some programs a
missing file produces an effect hard or impossible to
achieve in another way, so that a missing file needs to be
kept that way if the user did it.
ORIG -->
けれども、<prgn>dpkg</prgn> は、ユーザまたはスクリプトに
よって削除された設定ファイルを上書きすることは
<em>ありません</em>。いくつかのプログラムにおいては、
ある設定ファイルが、存在しないことによって、他の方法では
代替できないような効果をねらっているものがあります。
したがって、もしユーザがそうしたのであれば、削除された
ファイルはそのままにしておく必要があります。
</p>
<p>
<!-- ORIG
Note that a package should <em>not</em> modify a
<prgn>dpkg</prgn>-handled conffile in its maintainer
scripts. Doing this will lead to <prgn>dpkg</prgn> giving
the user confusing and possibly dangerous options for
conffile update when the package is upgraded.</p>
ORIG -->
パッケージは、パッケージ管理スクリプトの中では、
<prgn>dpkg</prgn> によって操作される conffile を変更することは
<em>できません</em>。もし、これをした場合、パッケージの
アップデートのとき、<prgn>dpkg</prgn> は、ユーザを混乱させる、
また潜在的に危険なオプションを与えることになります。
</sect>
<!-- ORIG
<sect><heading>Fully-featured maintainer script configuration
handling
ORIG -->
<sect><heading>管理スクリプトによる設定の取扱い
</heading>
<p>
<!-- ORIG
For files which contain site-specific information such as
the hostname and networking details and so forth, it is
better to create the file in the package's
<prgn>postinst</prgn> script.
ORIG -->
ホスト名やネットワークの詳細など、サイト依存の情報を含む
ファイルは,パッケージの <prgn>postinst</prgn> スクリプトに
よって、そのファイルを作成するのがよいでしょう。
</p>
<p>
<!-- ORIG
This will typically involve examining the state of the rest
of the system to determine values and other information, and
may involve prompting the user for some information which
can't be obtained some other way.
ORIG -->
たいてい、値や他の情報を決定するのに、システムの他の部分の
状態が必要となります。そして、その情報が得られないときは、
プロンプトを出力して、ユーザに情報を入力してもらうことに
なります。
</p>
<p>
<!-- ORIG
When using this method there are a couple of important
issues which should be considered:
ORIG -->
この方法を使用するとき、いくつか考慮しなければいけない重要な
ことがあります。
</p>
<p>
<!-- ORIG
If you discover a bug in the program which generates the
configuration file, or if the format of the file changes
from one version to the next, you will have to arrange for
the postinst script to do something sensible - usually this
will mean editing the installed configuration file to remove
the problem or change the syntax. You will have to do this
very carefully, since the user may have changed the file,
perhaps to fix the very problem that your script is trying
to deal with - you will have to detect these situations and
deal with them correctly.
ORIG -->
設定ファイルを生成するプログラムにバグを発見した場合や、
または、そのファイルのフォーマットが以前のバージョンから
変更されたとき、postinst スクリプトを編集しなければ
ならなくなるでしょう。ふつう、この場合は、インストールされた
設定ファイルから、問題をとりのぞくことになるか、そのファイルの
文法を変更することになります。これは、気をつけて行わなくては
なりません。すでにユーザはその問題に対処するように
設定ファイルを更新しているかもしれません。スクリプトはすでに
対処済みである場合を検出して、正しくそれを扱わなければ
なりません。
</p>
<p>
<!-- ORIG
If you do go down this route it's probably a good idea to
make the program that generates the configuration file(s) a
separate program in <tt>/usr/sbin</tt>, by convention called
<tt><var>package</var>config</tt> and then run that if
appropriate from the post-installation script. The
<tt><var>package</var>config</tt> program should not
unquestioningly overwrite an existing configuration - if its
mode of operation is geared towards setting up a package for
the first time (rather than any arbitrary reconfiguration
later) you should have it check whether the configuration
already exists, and require a <tt>−force</tt> flag to
overwrite it.</p></sect>
ORIG -->
設定ファイルの生成を <tt>/usr/sbin</tt> に置かれる別の
プログラムにまかせるというのは、よい考えです。
このプログラム名は慣習として、
<tt><var>package</var>config</tt>となっており、適当なら、
パッケージの インストール後に postinst スクリプトから
実行されます。この
<tt><var>package</var>config</tt> プログラムは、ユーザに
問合せることなしに既存の設定を上書きしてはいけません。
もし、そのプログラムが (後に再設定行う場合ではなく)
初めてセットアップする場合には、そのプログラムは、
設定ファイルが存在するかどうかをチェックしなければいけません。
そして上書きするためには、dpkg に、<tt>--force</tt>
オプションが与えられていなければいけません。
</p></sect>
</chapt>