存在する必要がありますが、dpkgのダウングレード後に削除されたファイルを処理する方法

存在する必要がありますが、dpkgのダウングレード後に削除されたファイルを処理する方法

私たちはRaspberry Pi / Raspbianベースの製品を持っており、Debianパッケージを使ってソフトウェアアップグレード(Pythonで書かれた)をリリースします。

特に、有効なダウングレードパスを提供するなど、新しいパッケージを正しくインストールするのに問題があります。私は一般的なDebianユーザーですが、パッケージ管理の世界は初めてです。

私たちのパッケージにはいくつかのファイルとスクリプトがあります/usr/local/bin。しかし、これらのファイルはいいえDEBIANパッケージフォルダの一部です。当社の製品の製造中にSDカードにコピーされます。

今作成しているパッケージはこれらのファイルの1つを置き換える必要があるため、DEBIAN/usr/local/binパッケージ内に新しいファイルを含むフォルダを作成しました。

新しいパッケージへのアップグレードには問題ありませんが、ダウングレード、新しいファイルを削除し、以前は存在しなかったフォルダをdpkg削除してみてください。/usr/local/bin以前のバージョンのパッケージにはこのファイルが必要なため、正しくインストールして実行することはできません。

新しいパッケージのスクリプトを使用してインストールするときにファイルをコピーし、アンインストール時に再度コピーしてみましたが、タスクの順序では、新しいパッケージがすべてのスクリプトを実行したpre\post inst\rm後に削除が発生するため、これは成功しません。 。

ダウングレード中にファイルが削除されるのを防ぐ方法はありますか?

問題を明確にしたことを願っています。

答え1

私の解決策は@muruがコメントで提案したものとほぼ同じです。

  • 新しいファイルを/opt/appname/binパッケージに入れる
  • からpostinstファイルをバックアップ/usr/local/binし、シンボリックリンクを/opt/appname/bin
  • からpostrmシンボリックリンクを削除し、バックアップがあれば復元します。

関連情報