私たちは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
シンボリックリンクを削除し、バックアップがあれば復元します。