web-dev-qa-db-ja.com

debian階層のどこにテンプレートと設定ファイルを置くべきですか

私のアプリケーション(foo)のdebianバイナリパッケージを書いています。 postinst(インストール後)スクリプトは、ユーザーにいくつかの質問をし、同様に回答を得たいと考えています。私はdebconfを使用してこれを達成しようとしています。しかし、ユーザーに質問を促すUI画面は表示されません。私の設定とテンプレートがdpkgによって呼び出されるかどうかは疑問です。私はリンクごとにすべての指示を使用しています debconf tutorial 以下の質問について誰かが私を明確にしてくれますか:

  1. 「config」スクリプトと「templates」ファイルを/ debian/tmp/DEBIAN /内に配置しています。だから、それはdebian階層の正しい場所ですか?名前は正しいですか?
  2. 以下のスクリプトは正しいですか?

制御ファイルのスニペット(私が投稿している関連フィールドのみ)

Depends: debconf (>= 0.2.17)

構成ファイルのスニペット

#!/bin/sh
set -e

#echo "Config being called"

# Source debconf library.
. /usr/share/debconf/confmodule

# Do you like debian?
db_input medium foo/like_debian || true
db_go

# Check their answer.
db_get foo/like_debian
if [ "$RET" = "false" ]; then
    # Poor misguided one..
    db_input high foo/why_debian_is_great || true
    db_go
fi

テンプレートファイルのスニペット

Template: foo/like_debian
Type: boolean
Description: Do you like Debian?
We'd like to know if you like the Debian GNU/Linux system.

Template: foo/why_debian_is_great
Type: note
Description: Poor misguided one. Why are you installing this package?
Debian is great. As you continue using Debian, we hope you will
discover the error in your ways.

Preinstのスニペット:

#!/bin/sh
set -e
#echo "Stage preinst" $1

exit 0

Postinstのスニペット:

#!/bin/sh
set -e
#echo "Stage postinst" $1

# Source debconf library.
. /usr/share/debconf/confmodule

db_get foo/like_debian
if [ "$RET" = "false" ]; then
    touch "/home/myhome/ITWORKED"
fi

exit 0

Prermのスニペット:

#!/bin/sh
set -e
#echo "Stage prerm" $1

exit 0

Postrmのスニペット:

#!/bin/sh
set -e
#echo "postrm" $1

exit 0

ありがとう、-Sandeep

1
Sandeep

独自のdebianパッケージの作成に関するブログ投稿を作成しました:

http://www.leaseweblabs.com/2013/06/creating-custom-debian-packages/

読み物を節約するために、ディレクトリ構造は次のようになります。

  • デビアン
    • 制御(必須)
    • テンプレート(オプション)
    • preinst(オプション、chmod 0755)
    • postinst(オプション、chmod 0755)
    • prerm(オプション、chmod 0755)
    • postrm(オプション、chmod 0755)
  • …(指定された場所にインストールされるファイル)

パーミッションと場所がこのようなものであることを確認してください、そしてそれは動作するはずです:)

3
RvGaTe

入力して問題を解決しました

echo PURGE | debconf-communicate <packagename>

このコマンドは、debconfデータベース内のすべての選択をクリアします。選択がdebconfデータベースにある場合、パッケージインストーラーはconfigファイルの入力コマンドを実行しないことに気付きました。したがって、purgeコマンドにpostrmファイルに入れます。

0
FBG