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

[debian-devel:00410] dpkg behavior ?



きくたにです。subject変えました。

: message sent on "Thu, 09 Jan 1997 19:59:18 +0900"
: message ID = [debian-devel : No.00404]
: "" == ukai@xxxxxxxxxxxxx wrote:

> > ちなみに、/mnt/var/lib/dpkg/info 以下には *.list や *.postinstは
> > できていますが、*.preinstは一つもできていませんでした。

> 消されてしまったのでは?

ちがうと思います。正しくインストールされたdebianで、
/var/lib/dpkg/info 以下に*.preinstは残ってますよね。
もっとも、/var/lib/dpkg/infoには後で移動されるだけで、
実行時には別のところかも。たとえば

dpkg-deb -e /cdrom/stable/binary/base/ae_962-11.deb /mnt

とやると、/mnt/preinst ができるので、これが実行されたあと
/var/lib/dpkg/infoに移されるのかも。

> # file system full じゃないですよね…

もちろん。

> 推測ですが、preinst の script が必要としている program がない
> ので失敗してる とか?
> # No such file or directory というところからして
> # #!-interpreter が見つかってない?

そう思ったのですが、上の例では /mnt/preinst の中身は
------------------------------------------------
#!/bin/sh

set -e

dpkg --assert-support-predepends
------------------------------------------------
なので、interpreterがないということはないです。念のため /mnt/bin/sh に 
bashコピーしても駄目でした。

しかし、dpkgのほうは
dpkg --assert-support-predepends --root=/mnt
すると
dpkg not recorded as installed, cannot check for Pre-Depends support !
と怒られているので、これかもしれません。
でもその後よく見ると、別パッケージではpostinstも失敗してることがわかり
ました。こっちはほんとに単純なshellスクリプトだけで、失敗しそうにも
ないのですが。

> dpkg-deb --info 失敗したやつ.deb preinst で見ると どうなってますか。

dpkg-deb は root=/mnt みたいなオプションがないので駄目です〜。


しかたがないのでgdbでdpkgの動作を追ってみましたが、subprocess呼ぶ
ところで、なんかうまく追えなくなっちゃいました。困った。

dpkg-deb -xでunpackしてから、dpkg-deb -eでできたpreinstとpostinst
を実行したほうが簡単な気もしてきました。

-- 
人生を背負い投げ

菊谷 誠(Kikutani Makoto)  kikutani@xxxxxxxxx, kikutani@xxxxxxxxxxxxxxx
                          hgf03701@xxxxxxxxxxxxxxxx