2012-04-13 19 views
1

私はpostinstスクリプトに問題があります。私のアプリケーションのためにいくつかのユーザーを作成するにはMySQLのrootパスワードを尋ねる必要があります。 db_inputをpostinstで使用するのは悪い習慣ですが、本当に必要です。 私のアプリケーションフォームリポジトリをインストールするときにこのpostinstが動作しないのですが、.debパッケージとしてインストールすると正しく動作しますか?postinstのdb_inputが機能しません

のpostinst:

#!/bin/bash -e 

. /usr/share/debconf/confmodule 

db_input high my_app/mysql_root_password || true 
db_go 

エラー:

dpkg: error processing my-app (--configure): 
subprocess installed post-installation script returned error exit status 30 
configured to not write apport reports 
             Errors were encountered while processing: 
my-app 
E: Sub-process /usr/bin/dpkg returned an error code (1) 
+0

同じ問題db_get ... – Lazy

答えて

2

差はおそらくあなたのpostinstが実行されると、端末の設定方法とは何かを持っています。おそらくaptは、dpkgを単独で実行するときとは多少異なる動作をします。おそらく、apt-wrapped postinst呼び出しにはTTYが割り当てられていないこともあります。私は分かりません。

しかし、私はdb_inputをpostinstに入れることさえサポートされているとは思わないので、それをそのまま修正するのは難しいかもしれません。実際にpostinstスクリプト自体から質問する必要がある場合は、debhelperコマンドが実行される環境で$DEBCONF_DEBUGを "開発者"に設定してデバッグすることができます。

しかし、より有用な解決策はこれだと思います。db_inputの場合はdebian/configスクリプトを使用することをお勧めします。あなたを止めているのは何ですか?あなたは私の古いdebian/postinstファイルの表情db_inputた含まれていてください

#!/bin/sh -e 
. /usr/share/debconf/confmodule 
db_version 2.0 
db_beginblock 
db_input high my_app/mysql_root_password || true 
db_endblock 
db_go 

にそれを変更した場合

+1

設定スクリプトは.debパッケージがインストールされる前に動作します。つまり、システムにmysqlがなく、パッケージがmysql設定スクリプトに依存する場合、mysqlインストールの前にmysqlパスワードを要求します。とにかく、db_inputはpostinstスクリプトで正しく動作しますが、問題はpostinst本体にあります。 – Lazy

0

が解決されますあなたのpostinst中に問題がある可能性があります。それはうまく動作しますが、lintianがpostinstのdb_inputを気に入らず、debian/configに移動するように指示したので変更しました。

関連する問題