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

[debian-devel:12857] Re: debconf japanese manual



やすいです.

何を作ってるかというと,ATOKX のインストーラパッケージなんですが…

/* In mail "[debian-devel:12855] debconf japanese manual"
   tach@debian.or.jp, as "tach" wrote... */

tach> debconf の日本語マニュアルとか,どっかにありますか.
tach> なければ,debconf-doc をじっくり読むしかないんですが…

見よう見まねで,一応うまくいきましたが,同じパッケージをもう
一度上書きインストールしたり,バージョンアップしたりすると,
exit status 30 で止まってしまいます.

postinst に -x つけて,DEBCONF_DEBUG を developer にすると,

  + '[' configure = configure ']'
  + . /usr/share/debconf/confmodule
  ++ '[' '!' '' ']'
  ++ exec /usr/share/debconf/frontend /var/lib/dpkg/info/atokx.postinst configure 1.0-0.1
  debconf: frontend started
  debconf: frontend running, package name is atokx
  debconf: starting /var/lib/dpkg/info/atokx.config configure 1.0-0.2
  debconf: <-- TITLE Configuring atokx installer
  debconf: --> 0
  debconf: <-- INPUT medium atokx/archive_dir
  debconf: --> 30 question skipped
  dpkg: error processing atokx (--install):
   subprocess post-installation script returned error exit status 30
  Errors were encountered while processing:
   atokx

となってしまいます.
パッケージが入ってないときなら,問題ありません.
#たぶん,db_purge が行われるからだと思いますが.

ちなみに,うまくいくときは,この時点で

  debconf: frontend started
  debconf: frontend running, package name is atokx
  debconf: starting /var/lib/dpkg/info/atokx.config configure 
  debconf: <-- TITLE Configuring atokx installer
  debconf: --> 0
  debconf: <-- INPUT medium atokx/archive_dir
  debconf: --> 0 question will be asked
  debconf: <-- GO 
  debconf: --> 0 ok
  debconf: <-- GET atokx/archive_dir
  debconf: --> 0 /mnt
  debconf: starting /var/lib/dpkg/info/atokx.postinst configure

となります.そのあとで(debconf のデバッグ出力だけ抽出),

  debconf: <-- TITLE Configuring atokx installer
  debconf: --> 0

  :

  debconf: <-- INPUT medium atokx/archive_dir
  debconf: --> 30 question skipped

  :

  debconf: <-- GO 
  debconf: --> 0 ok

  :

  debconf: <-- GET atokx/archive_dir
  debconf: --> 0 /mnt

となってます.

とりあえず,postinst と config と templates を添付しておきます.
-- 
// 安井 卓 (YASUI, Taku) <tach@debian.or.jp>
// WWW: http://tach21.hoops.ne.jp/
#!/bin/sh -x

ATOKX_ARC=atokx-1.0-1.i386.tgz
IIIMF_ARC=iiimf.tgz
ATOKX_MD5=979d5235e0937e3d25c8498e71cb9afc
IIIMF_MD5=37957125d29856283f5e6a0be349de72
atokxtmp=/usr/lib/atokx/atokx-archive

export DEBCONF_DEBUG=developer

if [ "$1" != configure ]; then exit 0; fi

if [ "$1" = "configure" ]; then

    # use debconf
    . /usr/share/debconf/confmodule

    # title
    db_title 'Configuring atokx installer'

    db_input medium atokx/archive_dir
    db_go

    db_get atokx/archive_dir
    DIR=$RET

    if [ -e "${DIR}/${ATOKX_ARC}" ]; then
	atokx_md5=`md5sum -b ${DIR}/${ATOKX_ARC} | sed -e 's/ .*$//'`
	if [ "$atokx_md5" != "$ATOKX_MD5" ]; then
	    bad=true
	fi
    else
	bad=true
    fi

    if [ "${bad}" = "true" ]; then

	db_fset atokx/badfile isdefault true
	db_subst atokx/badfile filename "${DIR}/${ATOKX_ARC}"
	db_input critical atokx/badfile || exit 1
	db_go || exit 1
	exit 1

    fi

    if [ -e "${DIR}/${IIIMF_ARC}" ]; then
	iiimf_md5=`md5sum -b ${DIR}/${IIIMF_ARC} | sed -e 's/ .*$//'`
	if [ "$iiimf_md5" != "$IIIMF_MD5" ]; then
	bad=true
    fi
    else
	bad=true
    fi

    if [ "${bad}" = "true" ]; then

	db_fset atokx/badfile isdefault true
	db_subst atokx/badfile filename "${DIR}/${IIIMF_ARC}"
	db_input critical atokx/badfile || exit 1
	db_go || exit 1
	exit 1

    fi

    if [ -e $atokxtmp ]; then
        rm -rf $atokxtmp
    fi
    mkdir -p -m 0700 $atokxtmp
    cd $atokxtmp

    # expand atokx
    tar xzf ${DIR}/${ATOKX_ARC}
    tar xzf ${DIR}/${IIIMF_ARC}

    # install atokx
    mv usr/lib/im /usr/lib/atokx/
    mv usr/lib/locale /usr/lib/atokx/
#    ln -s /usr/lib/atokx/im/atok12.so /usr/lib/im/leif/
#    ln -s /usr/lib/atokx/im/atokserver /usr/lib/im/locale/ja/
#    ln -s /usr/lib/atokx/atokserver /usr/lib/locale/ja/
#    ln -s /usr/lib/atokx/im/atokserver/help /usr/share/doc/atokx/help-html
#    ln -s /usr/lib/atokx/im/atokserver/information /usr/share/doc/atokx/information

#    ln -s /usr/lib/locale/ja/atokserver/original /var/locale/ja/atokserver/
#    ln -s /usr/lib/locale/ja/atokserver/systemdic /var/locale/ja/atokserver/

fi

#DEBHELPER#
Template: atokx/archive_dir
Type: string
Default: /tmp
Description: Where is ATOKX archive?
 This package is an installer package, it does not actually contain
 ATOKX. You will need to get ATOKX commercial package.
 .
 If you mounted ATOKX original CDROM, enter the directory you mount on.
 .
 Or if you have following two files, enter the directory you put it in.
 .
     o atokx-1.0-1.i386.tgz
     o iiimf.tgz
Description-ja: ATOKX アーカイブはどこにありますか?
 このパッケージは,インストーラパッケージで,ATOKX 本体を含んで
 いません.よって,ATOKX を購入するなどして入手する必要があります.
 .
 もし,ATOKX の CDROM からインストールするなら,CDROM のマウント
 ポイントを指定してください.
 .
 あるいは,以下の 2 つのファイルがあるパスを指定してください.
 .
     o atokx-1.0-1.i386.tgz
     o iiimf.tgz

Template: atokx/badfile
Type: note
Description: Cannot find the ATOKX archive file.
 The file ${filename} does not exist, or it is corrupt. You may have
 put the wrong file, or put it in the wrong location. Please try again.
Description-ja: 正しい ATOKX アーカイブを発見できませんでした
 ${filename} は存在しないか,
 正しいファイルではありません.間違ったファイルを置いたか,
 間違ったパスを指定したのだと思われます.もう一度試してみてください.
#!/bin/sh -e

ATOKX_ARC=atokx-1.0-1.i386.tgz
IIIMF_ARC=iiimf.tgz
ATOKX_MD5=979d5235e0937e3d25c8498e71cb9afc
IIIMF_MD5=37957125d29856283f5e6a0be349de72
hoge=ATOKX

# use debconf
. /usr/share/debconf/confmodule

# title
db_title 'Configuring atokx installer'

db_input medium atokx/archive_dir
db_go

db_get atokx/archive_dir
DIR=$RET

if [ -e "${DIR}/${ATOKX_ARC}" ]; then
  atokx_md5=`md5sum -b ${DIR}/${ATOKX_ARC} | sed -e 's/ .*$//'`
#  echo "$atokx_md5 == $ATOKX_MD5"
  if [ "$atokx_md5" != "$ATOKX_MD5" ]; then
    bad=true
  fi
else
  bad=true
fi

if [ "${bad}" = "true" ]; then

  db_fset atokx/badfile isdefault true
  db_subst atokx/badfile filename "${DIR}/${ATOKX_ARC}"
  db_input critical atokx/badfile || exit 1
  db_go || exit 1
  exit 1

fi

if [ -e "${DIR}/${IIIMF_ARC}" ]; then
  iiimf_md5=`md5sum -b ${DIR}/${IIIMF_ARC} | sed -e 's/ .*$//'`
  if [ "$iiimf_md5" != "$IIIMF_MD5" ]; then
    bad=true
  fi
else
  bad=true
fi

if [ "${bad}" = "true" ]; then

  db_fset atokx/badfile isdefault true
  db_subst atokx/badfile filename "${DIR}/${IIIMF_ARC}"
  db_input critical atokx/badfile || exit 1
  db_go || exit 1
  exit 1

fi