3

私のdebファイルは/opt/ myCompany / myProgramにインストールされ、dpkg -P myProgramでパッケージをパージすると、すべてが削除されます-/ opt(私のものが/ optにファイルがある唯一のパッケージである場合)-/の削除を回避するにはどうすればよいですか?パージ中にフォルダを選択しますか?

/ optがpostrmに存在するかどうかを確認し、存在しない場合は追加してみましたが、喜びはありません...postrmスクリプトの実行後にフォルダが削除されたようです。現在、postinstを使用して/ optに隠しファイルを追加しています-これにより、optが削除されるのを防ぎますが、ハッキーな感じがします-より良い方法があるはずです。

ありがとうございました、

4

2 に答える 2

2

この質問は約7年前に尋ねられましたが、Google検索で同様の問題を見つけて、とにかく答えを投稿しようと思いました。質問には実際には解決策ではない答えがあるからです。

次の質問も関連しており(ただし、/optではなく/usr / localに関係します)、同様に解決できます。

dpkg:警告:ディレクトリ/ usr / localの削除中は空ではないため、削除されません

この問題は、次の手法で解決できました。

Debianパッケージ(.deb)は、3つのメンバーを持つ単なる「ar」アーカイブファイルです。

$ ar t package.deb
debian-binary
control.tar.gz
data.tar.xz

data.tar.xzメンバーは、*。debの経過時間に応じてdata.tar.gzという名前になる場合があります。それに応じてコマンドを調整します。

ターゲットシステムにインストールされるファイルは、data.tar.xzメンバーに含まれています。data.tar.xzメンバーを抽出してその内容を一覧表示すると、たとえば次のようなものが表示されます。

$ ar p package.deb data.tar.xz | unzx -c | tar t
./
./opt/
./opt/myCompany/
./opt/myCompany/myProgram

data.tar.xzファイルから./opt/ディレクトリメンバー(その内容ではない)を削除すると、パッケージがアンインストールされたときにdpkgが/optディレクトリを削除しようとするのを防ぐことができます。

$ ar x package.deb data.tar.xz
$ unzx data.tar.xz
$ tar --delete --occurrence -f data.tar ./opt/
$ #tar --delete --occurrence -f data.tar ./usr/local/

ここで、data.tarファイルの内容を一覧表示すると、次のように表示されます。

$ tar tf data.tar
./
./opt/myCompany/
./opt/myCompany/myProgram
  • ./opt/メンバーが削除されていることに注意してください。

最後のステップは、data.tarファイルを再圧縮し、debのdata.tar.xzメンバーを変更されたメンバーに置き換えることです。

tarファイルアーカイブから./opt/エントリを削除し、deb内のtarファイルアーカイブを変更されたものに置き換える完全なプロセスの一例を次に示します。

$ ar x package.deb data.tar.xz
$ unzx data.tar.xz
$ tar --delete --occurrence -f data.tar ./opt/
$ xz data.tar
$ ar r package.deb data.tar.xz
$ rm data.tar.xz

これで、debがシステムから削除/アンインストールされたときに、dpkgは/optディレクトリを削除しようとしません。

于 2019-09-23T15:59:08.383 に答える
1

それはただのDebianです。Debian以外の標準ディレクトリ(/optあなたの場合など)からパッケージを削除し、そのディレクトリにファイルが残っていない場合は常に、そのディレクトリdpkgを削除しようとします。

削除時に他のファイルが含まれている場合/optは、「/ optは空ではありません。削除されていません」というメッセージが表示され、それだけです。

もう1つの「ハッキー」な方法は、/ opt inの再作成を追加することpostrmですが、隠しファイルよりもクリーンではありません:)

于 2012-10-23T01:42:39.917 に答える