web-dev-qa-db-ja.com

RPMの削除は配信されたディレクトリを削除せず、ゴミを残します

RPMを介してアプリケーションを配信します。

このアプリケーションは、さまざまなディレクトリとファイルを提供します。
例えば。下 /opt/internal/com
ファイル構造をコピーしています。

rpm -eすべてのファイル構造/opt/internal/comは削除されます。
しかし、そうではありません。
ファイル構造に空でないディレクトリがあります。

これは理由ですか?しかし、これらの(空ではない)ディレクトリはRPMインストールによって作成されました。したがって、RPMによって「所有」され、自動的に削除されることを期待します。

これは間違っていますか?手動で削除する必要がありますか?

6
Jim

RPMは知らないファイルを削除しません。そのため、パッケージの一部ではないディレクトリに新しいファイルが作成された場合、RPMはそれらを削除しません。

それらが空で、それらについて知っている場合、ディレクトリを削除します。スペックファイルの記述方法によって異なります。

6
James O'Gorman

James O'Gormanからの回答は完全に正しいです。

追加したもう1つのシナリオは、最近遭遇したものですが、「%dir/dir/path」という行で%filesセクションのRPMパッケージが所有するディレクトリに通知する必要があるため、RPMデータベースのすべてのファイルとディレクトリが記憶されます。 RPM消去中にインストールされ、削除できます(そのパッケージがdirのコンテンツを所有していない場合を除く)。

さまざまなディストリビューションでRPM消去を処理するさまざまな方法があるため、所有ディレクトリを指定する際には、さらに注意が必要です。

例えばパッケージに次のファイルとディレクトリが含まれている場合:

**DIR:** /opt/dir1/empty_dir**FILE:** /opt/dir1/file1**FILE:** /opt/dir1/dir2/file2

%filesセクションは次のようになります

%files
%dir /opt/dir1
%dir /opt/dir1/empty_dir
%dir /opt/dir1/dir2
/opt/dir1/file1
/opt/dir1/dir2/file2

トリッキーな部分は、あなたが見逃すかもしれない%dir /opt/dir1といくつかのディストリビューションで空であっても削除されません。

1
avg598