Debianパッケージによるとメンテナンススクリプト文書install
、プリインストールスクリプトは、最初の引数または最初の引数を使用して呼び出すことができますupgrade
。
スクリプト
preinst
は次のように呼び出すことができます。
new-preinst
インストールするnew-preinst
インストールする旧バージョン 新バージョンnew-preinst
アップグレード旧バージョン 新バージョン
install old-version new-version
これらとそしての違いは何ですかupgrade old-version new-version
?最初の形式(ちょうどinstall
)ははっきりしているようですが、古いバージョン番号と新しいバージョン番号の違いinstall
とそれをどこに指定するのか理解できません。upgrade
答え1
これの説明は次のとおりです。「詳細情報」セクション:
- パッケージが完全にインストールされている場合、古いバージョンと新しいバージョンが
preinst
呼び出しに使用されます。upgrade
- パッケージが以前にインストールされていて、まだ設定ファイルがある場合(「Config-Files」ステータス)つまり古いバージョンと新しいバージョンで呼び出された出力
rc
として表示されます。dpkg -l
preinst
install
- パッケージが新しくインストールされているか以前に削除された場合は、バージョン情報なしで
preinst
呼び出されます。install
preinst
解凍ステップの前に実行されるため、以前のバージョンupgrade
のパッケージコンテンツが利用可能であることを意味しますが、install
パッケージコンテンツ(構成ファイルを除く)のバージョンは存在しないことを意味します。また、バージョン情報が提供されると、処理する必要がある構成ファイルがある可能性があることを示します。
upgrade
との違いはinstall
重要ではありませんが、エクスポートされたデータに関連するアップグレードが考えられるシナリオの1つです。たとえば、upgrade
モードではslapd
preinst
データベースのエクスポートinstall
;このツールが存在しないため、モードではこれを実行できません。
答え2
考慮する:
- パッケージA、バージョンxをインストールします。
- パッケージAを削除しましたが削除しなかったため、プロファイル、ユーザー、グループなどはそのまま残ります。
- パッケージA、バージョンyをインストールします。
管理者スクリプトはこれらのプロファイル、ユーザー、グループなどを処理する必要があります。厳密に言えば、アップグレードするのではなく、インストールだけすることです。 2番目のフローチャートでこれを確認できます。「以前に削除されたが削除されていないパッケージをインストールします」