これが、この問題について過去数週間でわかったことです。
事前にパッケージ化されたバイナリでは、実行時に動的に決定される宛先ディレクトリを使用して debian パッケージをビルドすることはできません。configureを使用してインストールディレクトリを設定できるソースからビルドされたパッケージをインストールすると、これが可能になると思います。ただし、この場合、これらは組み込みの Ubuntu マシンであるため、作成されていないため、そのようなオプションを追求しませんでした。インストールするための非伝統的な方法(ハック)を考え出しましたが、それはうまくいきました。debian パッケージには / を基準とした tar ボールが含まれているだけなので、/tmp の下のディレクトリを基準にしてパッケージをビルドするだけです。その後、postinst スクリプトで、ファイルをアーカイブから永続的な場所にコピーする場所を決定できます。
再起動後、/tmp の下のサブディレクトリが自動的に削除された後、dpkg はファイル パッケージの存在を認識しない可能性があると予想していました。これは問題ではありませんでした。「dpkg -l myapp」を実行すると、まだインストールされていると表示されました。dpkg/apt-get を使用したパッケージの更新も問題なく機能しました。
私が見つけたのは、「dpkg -r myapp」を使用してパッケージを削除しようとすると、dpkg が /tmp を削除しようとするが、これは良くないということです。ただし、 /tmp は簡単に削除できないため、成功しませんでした。さらに、私たちの状況では、パッケージを削除することはなく、単にアップグレードするだけです。
ソースのコードの違いにより、プラットフォームごとに再コンパイルする必要があるため、最終的にユニバーサルパッケージを放棄する必要がありましたが、このままにしておけばうまくいきました。
--instdir を使用してパッケージのインストール ディレクトリを変更しようとしましたが、ファイルは再配置されますが、dpkg ファイルが新しい instdir に対して相対的に見つからないため、dpkg は失敗します。--instdir の使用は、chroot のようなものです。また、 --admindir と --root をさまざまな組み合わせで試して、/ に関連する dpkg システムを使用できるかどうかを確認しましたが、ファイルを再配置してインストールしましたが、機能しませんでした。rpmには機能する再配置オプションがありますが、Ubuntuには機能しないと思います。