web-dev-qa-db-ja.com

Rpmlint "use-tmp-in-%postun"エラー

rpmlint出力:

E: use-tmp-in-%postun

スペックファイル:

%postun
rm -r /var/aci /tmp/aci_tmp 2> /dev/null

また、パッケージを削除できません

このパッケージをアンインストールした後またはアンインストールする前に、/ tmp内のディレクトリを削除するにはどうすればよいですか?

1
PHPoenX

可能であれば、常に%postおよび%postunスクリプトを避けるようにしてください。あなたはそれらをaciファイルまたはフォルダをあなたのパッケージに属するようにすることができます。

例として、/var/aciがフォルダーで、/tmp/aci_tmpがファイルであると仮定します。次に、次のことができます。

%install
mkdir -p $PPM_BUILD_ROOT/var/aci

%files
/var/aci
%ghost /var/aci/* # not sure this is necessary...
%ghost /tmp/aci_tmp

%ghostディレクティブの意味:このファイル/フォルダーが表示された場合、それは私のものです。これは、パッケージを削除すると削除されることも意味します。

2
Chris Maes

なぜなら /tmpは通常、tmpfsとしてマウントされます。パッケージに何かが入っていると、再起動時に消去されます。

エラーを無視するので、おそらく問題はありません。

Tmpfiles.d(5)を使用することをお勧めします。つまり、ファイルを作成します/etc/tmpfiles.d/aci.conf

これらの行のいくつかで(ファイルまたはディレクトリを作成しているかどうかはわかりません):

   #Type Path                                     Mode User Group Age         Argument
   f     /file/to/create                          mode user group -           content
   F     /file/to/create-or-truncate              mode user group -           content
   w     /file/to/write-to                        -    -    -     -           content
   d     /directory/to/create-and-cleanup         mode user group cleanup-age -
   D     /directory/to/create-and-remove          mode user group cleanup-age -
0
msuchy