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

[debian-devel:04110] Re: about diversion



中原です。

 > 樽石です。

 > nakahara> す。purge 時に score を消したいというのであれば、
 > nakahara> 
 > nakahara> postinst では単に
 > nakahara> 
 > nakahara> 	touch ..../record
 > nakahara> 
 > nakahara> postrm では
 > nakahara> 
 > nakahara> 	if [ "$1" == "purge" ]; then
 > nakahara> 		rm -f ...../record > /dev/null
 > nakahara> 	fi
 > nakahara> 
 > nakahara> とすればよいのではないですか。
 > 単純にはいかないよというのは
 > こうやってif文をつかわなければ無理だということです。

そういう意味では単純にはいきません。

 > #ちなみにpostrmでそれをやろうとすると
 > #ディレクトリが空でないから消せないよと言われます。

... の部分が .../xjump/record で .../xjump が消せないわけですね。
文句を気にしないのなら
	rm -rf .../xjump
ですます手もありますが気持悪いかもしれませんね。

 > #だからpostinstで作ったものはprermで
 > #preinstで作ったものはpostinstで処理するべきではないでしょうか?

それも一理あります。ただ /var/lib/games/xjump.record だったら postrm
で問題ありません。パッケージに含まれる (すなわて prerm と postrm の間
で消される) /var/lib/games/xjump/ の下に作ったから問題なわけです。

では prerm で

 	if [ "$1" == "remove" ]; then
 		rm -f ...../record > /dev/null
 	fi

とすれば良いでしょう。(prerm は purge フェーズでは呼ばれません。)
問題点は record ファイルが conffiles と違って remove では残らないとい
うことですけど、スコアファイルなら許せますよね。

ただ、/var/lib/games/xjump を複数のパッケージで共有していれば、どっち
みち warning はでます。

 > upgrade時はprermが呼ばれないという文書のせいで変な先入観を
 > 持ってしまったようです。

prerm は、upgrade 時に (downgrade 時にも) 最初に呼ばれます。(old-prerm
upgrade new-version の形で。) 樽石さんの引用したマニュアルのステップ 2
にも書いてありますよね。upgrade も基本的には、古いパッケージを remove
してから、新しいパッケージを install するのですから。(実際はインストー
ルに失敗した時のためや、継承するファイルの為にいろいろ複雑なことをして
いますが。)

-- 
中原 早生
広島大学総合科学部 
nakahara@xxxxxxxxxxxxxxxxxxxxx