クライアントデバイスにインストールしたい.debパッケージがあります。現在、秘密鍵を介してのみアクセスできるプライベートストアには、これらのパッケージがあります。しかし、顧客(またはパッケージをダウンロードできる人)がパッケージを解凍し、コードを表示または変更するのを防ぎたいと思います。私の考えは、システムに復号化キーがある場合にのみインストール/圧縮解除できるdebパッケージを持つことですが、簡単ではないようです。
私の考えは、2つの.debパッケージを持つことです。私はすでに「一般」パッケージ(内部と呼ぶ)と別のパッケージ(外部)を持っていますが、そのパッケージにある唯一のものは次のとおりです。
- 暗号化された内部パッケージは/tmp/inner.deb.encに保存されます。
- postinstスクリプトに復号化キーがあることを確認し、あれば内部パッケージを復号化してインストールする。
重要な問題があります。 postinstスクリプトで、次のように内部debをインストールしますdpkg -i /tmp/inner.deb
。したがって、アウトソーシングをインストールしようとすると、次のエラーが発生しますdpkg: error: dpkg database lock was locked by another process with pid 10024
。私はこれが外部パッケージがインストールされたときにdpkgデータベースをロックし、その過程で(内部パッケージをインストールするために)dpkgを再呼び出ししようとすると、外部にインストールされたロックと競合するためだと思います。
dpkg -i /tmp/inner.deb
に変更するとapt install /tmp/inner.deb
同様の問題が発生します。アウトソーシングをインストールしようとすると、ロックが解除されるのを待ちます。
どんな提案がありますか?この考え方に従うか、まったく異なるものを選択してください。