[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

[debian-users:07726] Re: Is this man-db bug?



むつみです。

 Mitsuru Oka <95i44@xxxxxxxxxxxxxxxx> さんは
   Subject: [debian-users:07721] Is this man-db bug?
   Message-ID: <19980817184621R.oka@xxxxxxxxxxxxxxxx>
 において言いました

>> 岡@情報科学.高知大です。

>> man-db_2.3.10-65.jp4.deb をインストール(正確には何も考えずにapt-get
>> upgrade)したところ以下のエラーメッセージを出して異常終了しました。
>> 
>> 
>> man-db 2.3.10-65.jp3をman-db_2.3.10-65.jp4.debを使って置換するための準備中です ...
>>   Removing whatis indexes as well as /var/catman hierarchy.
>> 置換のためにman-dbを解凍中 ...
>> dpkg: error processing man-db_2.3.10-65.jp4.deb (--unpack):
>>  trying to overwrite `/usr/man/ja_JP.ujis', which is also in package canna
>> dpkg-deb: サブプロセスpasteがシグナル(Broken pipe)によって終了しました。

>> canna をインストールしており、 /usr/man/ja_JP.ujis 以下に幾つかのマニュ
>> アルが入っていることと関係があるようです。Debian ではこういった共通に
>> 使われ得るディレクトリをどのパッケージが責任を持って管理するものなのか
>> よく分かっていませんが、上記の通りうまくいっていないようです。

 これは、複数の問題が絡み合ったために起きた現象です。

 まず、どのパッケージがディレクトリを持つのかという問題ですが、これは、
どれが持っていても構いません。ディレクトリに関しては、(複数のパッケー
ジが持っていて)重複するのも OK です。全く問題ありません。

 で、上記のエラーが起ったのは

 canna に /usr/man/ja_JP.ujis という ディレクトリ が
 man-db には /usr/man/ja_JP.ujis という シンボリックリンク が

それぞれ含まれていたからです。

 この状況の経緯

 1) man-db の最新版では /usr/man/$LANG と行った場合、$LANG は最初の 2
   文字しか見てくれなくなった。つまり、日本語だと /usr/man/ja に日本語
   man ページがインストールされることが前提となる。

 2) しかし、この変更が比較的最近行われたため、Hamm (および Hamm-JP)の
   リリースまでに /usr/man/ja_JP.ujis にマニュアルをインストールしてい
   るパッケージをすべて変更するのは不可能だった。

 2) そこで、man-db (ja) の最新版では、インストール時に

     1. /usr/man/ja というディレクトリを用意する
     2. インストール時に /usr/man/ja_JP.ujis というディレクトリがある
        と、それ以下のファイルを、/usr/man/ja_JP.ujis に移動させ、
	/usr/man/ja_JP.ujis を削除
     3. /usr/man/ja_JP.ujis -> /usr/man/ja というシンボリックリンクを
        用意する

   という動作を差せる応急処置を取ることにした。

で、まあ、/usr/man/ja_JP.ujis が無い場合でも、ほかのパッケージをインス
トールする時に、/usr/man/ja_JP.ujis というディレクトリができないように、
パッケージにシンボリックリンクが含まれているんでしょう。

<疑問>
 でも、これって、パッケージに含めてると、確かに overwrite する形になっ
て、気持ちよくありませんね。どうせ、/usr/man/ja_JP.ujis -> /usr/man/ja
は張るんだから、パッケージにファイルとして含めずに、postinst とかで
リンクを張るようにするって処置だけじゃまずいんでしょうか。
</疑問>

 さらにもうひとつ、dpkg はリリース前の(つまり unstable とか frozen な)
開発段階では(チェックのために) overwrite ができない設定がディフォルト
にされます。で、リリースされるとその設定が解除され、overwrite 可がディ
フォルトになります。

 ですんで、Hamm に含まれる、

 dpkg_1.4.0.23.2

では、複数のパッケージに同じファイルが含まれてもディフォルトでは
overwrite するようになってるはずです。

 それより前の Hamm 開発中の時に含まれていた dpkg あるいは slink に含ま
れる dpkg_1.4.0.27.deb では、ディフォルトでは overwrite できない設定に
されています。

-- 
 From Nagoya
   ishikawa@xxxxxxxxxxx, ishikawa@debian.or.jp
     **  石川 睦%無意味な全文引用は嫌い@Japan Linux Users Group ** 
                                            (Nagoya Linux Users Group)
  私家版 f.o.l FAQ (Last Update : 1997/12/24)
       http://www.linux.or.jp/~ishikawa/linux/faq/faq-list.html