Djangoシステム用の.debインストーラーがあり、ソフトウェアをインストールする人に尋ねる必要がある質問があります。これを行ういくつかの方法を見ることができます。 Debianパッケージのベストプラクティス。
通常、debconfが明白な解決策になります。ただし、この場合、Debianにそれらを記憶させて、その後のすべてのアップグレードに適用するのではなく、毎回質問したいと思います。その理由は、質問の性質と関係があります。具体的には、「データベースの移行を今すぐ適用しますか?」という質問です。および「デモデータベースを設定しますか?」
さて、これらは両方ともインストール後に手動で行うことができますが、これまでの経験では、この手順は忘れがちなので、プロンプトを表示したいと思います。他のマシンからデータベースを移行する必要がある場合を除いて、自動的に実行する移行手順です。移行を適用する前に行う方が簡単です。 「デモデータベース」の質問は通常、最初のインストールでのみ使用されるため、移行のケースによって異なります。ただし、既存の使用中のデータベースに損傷を与える可能性があるため、Debianにその選択を記憶させ、毎回適用することは望ましくありません。
だから私は正統なDebian風のアプローチが何であるか疑問に思いました。 postinstスクリプトからシェルプロンプトを使用できますが、もっと良い方法があれば、もっと早くそれを実行します。 「AskAgain」について知っていることを付け加えておきますが、これはグローバル設定としてのみ機能するようで、このパッケージのためだけにこれをすぐに作成します。
最後にもう1つ、これは社内システムであり、パブリックリポジトリでホストされることはないため、無人インストールや非bashインストール環境などの考慮事項について過度に心配することはありません。
これは私を数週間悩ませてきました。ありがたいことにどんな助けも受けました。
問題には正統なアプローチがあり、「Debianのような」方法で状況を処理できるはずです。
Debconfの質問をリセットして、毎回再び表示されるようにすることができます:use db_reset
前の答えを忘れる(必要な場合)、およびdb_fset ... seen false
質問が以前に表示されたことを忘れてください。これにより、毎回移行を適用するかどうかを尋ねることができます。
デモデータベースの質問を処理するために、デモデータベースがインストールされたかどうかを記憶する非表示の設定を追加します。そうすれば、通常のdebconfメカニズムを使用して、質問が行われたかどうかを記憶できるため、最初のインストールでのみ表示されます。次に、デモデータベースがすでにインストールされているかどうかを確認して、2回インストールしないようにします。
デモデータベースを別のパッケージに分割します。これは初心者ユーザーが遊ぶものですが、これとサポートするコードを本番環境から除外したいと思います。更新だけでデモをインストールしたいかどうか尋ねられるのは本当に面倒です。
私が通常のDebConf質問として扱う更新の質問ですが、逆になりました。優先度が低く(通常は非表示)、デフォルトです。データベースの移行が必要な場合に更新を停止するかどうかを尋ねる質問はありません。これにより、管理者は完全に自動化されたプロセス、または移行を除いて完全に自動化されたプロセスのいずれかを構成できます。
ほとんどの更新は移行を必要としないため、ユーザーに迷惑をかけることは無意味です。ユーザーに古いシステムを実行したままにして更新を中止するオプションを与えると、安全なオプションが得られます。