Rpmlint“use-tmp-in-%postun”错误

Rpmlint“use-tmp-in-%postun”错误

rpmlint 输出:

E: use-tmp-in-%postun

规格文件:

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

另外,我无法删除包

在卸载此软件包之后或之前,如何删除 /tmp 中的目录?

答案1

如果可能的话,总是尽量避免%post编写%postun脚本。你可以做那些阿奇文件或文件夹属于您的包。

为了示例起见,我们假设它/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

这是因为/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 -

相关内容